关于Static修饰符
- static修饰符声明的静态成员是属于类型本身,而不是属于该类型的特定对象的。对于静态成员的引用,我们不能通过实例对象来进行引用,而只能通过类型名称引用它。理解这一点很重要。
- static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数。但不能用于索引器、析构函数或类以外的类型。
例:
1 public class MyBaseC
2 {
3 public struct MyStruct
4 {
5 public static int x = 100;
6 }
7 }
8
1public class Test
2{
3 MyBaseC c = new MyBaseC();
4 //Console.WriteLine(c.MyStruct.x);//错误的引用
5 Console.WriteLine(MyBaseC.MyStruct.x);//正确的引用
6 Console.ReadLine();
7}
8
- 尽管类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。
- 不可以使用this来引用静态方法或属性访问器。
- 如果对类应用static关键字,则该类的所有成员都必须是静态的。静态类不能被实例化。
- 类(包括静态类)可以有静态构造函数。在程序开始之后,该类被实例化之前的某个时刻,静态构造函数被调用。
关于静态类
- 静态类仅包含静态成员
- 静态类不能被实例划
- 静态类是密封的(sealed),因此,它们不能被继承。
- 静态类不能包含实例构造函数。
关于静态成员
- 静态成员包括静态方法、字段、属性和事件。他们不能通过实例来访问.
- 静态方法和属性只能访问静态字段和静态事件。
- 静态成员在第一次被访问之前并且在任何静态构造函数之前初始化。
关于静态构造函数
- 静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
- 静态构造函数既没有访问修饰符,也没有参数。
- 无法直接调用静态构造函数。
- 在程序中,用户无法控制何时执行静态构造函数。
- 静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
- 静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。