C#语法需要注意的地方

笔试中遇到的一些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 }
原文地址:https://www.cnblogs.com/FJuly/p/4511975.html