笔试中遇到的一些C#语法方面的问题,由于平时很少用到,笔试的时候模棱两可,现在做一个笔记。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Leetcode 8 { 9 10 /*静态构造函数举例*/ 11 class Person 12 { 13 /*静态构造函数不允许出现访问修饰符*/ 14 static Person() 15 { 16 Console.WriteLine("我是静态构造函数!!!"); 17 } 18 19 20 /* 21 在使用静态构造函数的时候应该注意几点: 22 23 1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。 24 25 2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。 26 27 3、一个类只能有一个静态构造函数。 28 29 4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。 30 31 5、最多只运行一次。 32 33 6、静态构造函数不可以被继承。 34 35 7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。 36 */ 37 } 38 39 40 41 /*readonly初始化举例*/ 42 class Sample 43 { 44 //readonly修饰的在初始化的时候可以多次赋值 45 public readonly int readonlyValue = 100;/*第一次赋值*/ 46 public Sample(int value) 47 { 48 this.readonlyValue = value;/*第二次赋值*/ 49 } 50 } 51 52 53 /*static readonly和const*/ 54 class Fruit 55 { 56 public const int color = 9;//通过类名直接进行访问 57 public static readonly string type = "西瓜"; 58 /*s 59 public Fruit() 60 { 61 type = "香蕉";//不能在普通的构造函数中赋值 62 }*/ 63 64 static Fruit()//可以在静态构造函数中赋值 65 { 66 type = "苹果"; 67 } 68 } 69 /* 70 const和static readonly的确非常像:通过类名而不是对象名进行访问,在程式中只读等等。在多数情况下能混用。 71 二者本质的差别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。 72 */ 73 }