C#学习笔记20191005-1006

目录

 

1.C#

2.一个C#程序主要包括:

3.C#MVC

4.C#基本语法

5.C#结构体(struct)

6.C#枚举Enum

7.C#中的析构函数

8.C#类的静态成员


1.C#

C#是个现代的、通用的、面向对象的编程语言。它是专为公共语言基础结构(CLI)设计的。CLI由可执行代码和运行时环境组成。允许在不同的计算机平台和体系结构上使用各种高级语言。

面向对象、面向组件、结构化语言。高效、可以在多种计算机平台上编译、.NET框架的一部分。

2.一个C#程序主要包括:

    命名空间Namespace declaration

    一个class 

        Class 方法和属性

    一个Main方法 

        语句Statements & 表达式Expressions

   注释

HelloWorld!

using System;

// 命名空间 包含一系列的类
namespace TestHelloWorld 
{
    // 类 其中包含了使用的数据和方法声明 
    // 在该类中只有一个Main方法
    // 类一般包含多个方法,其中定义了类的行为
    class Program 
    {
        // Main方法,是所有C#程序的入口点,该方法说明当执行时 类该做什么动作
        static void Main(string[] args)
        {
            // 该注释/**/ 会被编辑器忽略,且会在程序中添加额外的注释
            /*我的第一个C#程序*/
            Console.WriteLine("Hello World! " + DateTime.Now.ToString()); // 指定了类的行为
            // Console.ReadKey();  针对VS.NET用户,这使得程序会等待一个按键的动作
            // 防止程序从Visual Studio.NET启动时屏幕会快速运行并关闭。
            Console.ReadKey(); 
        }
    }
}

注意:

  1. C#大小写敏感。
  2. 所有的语句和表达式必须以分号结束。
  3. 程序的执行从Main方法开始。
  4. 和Java不同的是,文件名可以不同于类的名称。

3.C#MVC

“模型-视图-控制器(MVC)” 让对象尽量减少之间的依赖关系。

“programming to the interface, not the class”

黄金准则:类的松耦合,以及实现松耦合而使用的对接口编程。

MVC要实现的目标是将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强。

View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。

4.C#基本语法

c#是一种面向对象的编程语言,在面向对象的程序设计方法中,程序有各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者在相同的class中。

注释: 

          单行注释:   //

            多行注释:  /*   */

接受来自用户的值:System命名空间中的Console类提供了一个函数ReadLine(),用于接受用户的输入,并把它存储到一个变量中。

                                int num = Convert.ToInt32(Console.ReadLine());

                                函数Convert.ToInt32() 是把输入的数据转换为int数据类型,因为Console.ReadLine()只接受字符串格式的数据。

C#中的字符串常量:

         字符串常量是括在双引号" "里,或者是括在@" "里。

定义常量const     = value;

C#可空类型(NullAble)

        ?:单问号用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值,即让该数据类型是NullAble类型的。

int? i = 3 
等同于
Nullable i = new Nullable(3);

int i; //默认值0
int? ii; //默认值null

        ??:双问号可用于判断一个变量在为null时返回一个指定的值。可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。

Null 合并运算符( ?? )
Null 合并运算符用于定义可空类型和引用类型的默认值。Null 合并运算符为类型转换定义了一个预设值,以防可空类型的值为 Null。
Null 合并运算符把操作数类型隐式转换为另一个可空(或不可空)的值类型的操作数的类型。
如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值。

5.C#结构体(struct)

  1.  结构可带有方法、字段、索引、属性、运算发方法和事件。
  2. 结构可定义构造函数(必须为有参构造函数,无参构造函数是自动定义的,且不能被改变),但是不能定义析构函数。
  3. 与类不同,结构不能继承其他的结构或类。
  4. 结构不能作为其他结构或类的基础结构。
  5. 结构可实现一个或多个接口。
  6. 结构成员不能指定为abstract、virtual或protected。
  7. 当使用New操作符创建一个结构对象时,会调用适当的构造函数来创建结构。与类不同,结构可以不使用New即可被实例化。
  8. 如果不使用New操作符,只有在所有的字段都被初始化后,字段才被赋值,对象才被使用。

类 VS 结构

  • 类是引用类型,结构是值类型。
  • 结构不支持继承。
  • 结构不能声明默认的构造函数。

6.C#枚举Enum

C#枚举是值类型。枚举包含自己的值,且不能继承或者传递继承。

7.C#中的析构函数

析构函数:类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。

析构函数的名称是在类的名称前加一个波浪线~ 作为前缀,他不返回值,也不带任何参数。

析构函数用于在结束程序(如关闭文件、释放内存等)之前释放资源。

析构函数不能继承或重载。

 

8.C#类的静态成员

关键字static意味着类中只有一个该成员的实例。

静态变量用于定义常量,因为他们的值可以通过直接调用类而不需要创建类的实例来获取。

静态变量可在成员函数或者类的定义外部进行初始化,也可在类的定义内部初始化静态变量。

using System;

namespace ConsoleApp1
{
    class StaticTest {
        public static int num;
        public void count() {
            num++;
        }
        public int getNum() {
            return num;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Line line = new Line();
            line.SetLenth(6.12);
            Console.WriteLine(line.GetLenth());

            StaticTest staticTest = new StaticTest();
            staticTest.count();
            Console.WriteLine(staticTest.getNum());
            staticTest.count();
            Console.WriteLine(staticTest.getNum());
            staticTest.count();
            Console.WriteLine(staticTest.getNum());
            staticTest.count();
            Console.WriteLine(staticTest.getNum());

            StaticTest staticTest2 = new StaticTest();
            staticTest2.count();
            Console.WriteLine(staticTest2.getNum());
            staticTest.count();
            Console.WriteLine(staticTest2.getNum());
            staticTest.count();
            Console.WriteLine(staticTest2.getNum());
            staticTest.count();
            Console.WriteLine(staticTest2.getNum());

            Console.WriteLine(staticTest.getNum());

            Console.ReadKey();
        }
    }
}

C#学习笔记20191005-1006_第1张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(C#,Visual,Studio,2017)