静态构造函数 。。静态类中成员必须全是静态的。不能在静态类中声明实例成员
2014-02-26 14:33
204 查看
静态类是不能被实例化的。调用静态类的成员(方法,变量,属性)的时候用 静态类名.成员名 的方式来调用
静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。即:静态运行时被加载一次。
非静态每次运行都被加载
非静态类需要你自己去实例化加载它,才能调用
调用静态类成员的时候,会首先调用静态的构造函数去初始化这个静态成员。
一个类里 同时定义了静态字段和非静态字段 ,你在调用这个类的过程中,最先执行到的总是最先初始化静态字段(注意这个过程你可能会看不到,除非你自己定义了静态构造函数)
静态构造函数不可被直接调用,当创建类实例或引用任何静态成员之前,静态构造函数被自动执行,并且只执行一次。即:静态运行时被加载一次。
非静态每次运行都被加载
非静态类需要你自己去实例化加载它,才能调用
调用静态类成员的时候,会首先调用静态的构造函数去初始化这个静态成员。
一个类里 同时定义了静态字段和非静态字段 ,你在调用这个类的过程中,最先执行到的总是最先初始化静态字段(注意这个过程你可能会看不到,除非你自己定义了静态构造函数)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 字段访问权限 { class Users { public int age; public static int age2; public Users() //非静态构造函数 { age = 100; Console.Write(age); } static Users() //静态构造函数 { age2 = 10; Console.WriteLine(age2); } } class Program { static void Main(string[] args) //这里是程序的入口,最先被执行到,然后往下开始执行 { Users user = new Users(); //接着会执行到这一步(当执行到这一步的时候,因为Users类里有静态字段age2,所以需要最先初始化age2 ,所以这个时候程序会跳到 static Users(),等静态构造函数执行完毕后,才会跳到public Users() 来初始化非静态字段)所以这段程序输出的结果是10 ,100【注意先输出的是10,后输出的是100】 Console.ReadKey(); } } }
相关文章推荐
- C++静态成员函数不能声明为const、volatile、virtual的原因 与 C++的对象模型
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- 能不能在静态类里面声明 实例成员?
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- 【转载】C#扫盲之:静态成员、静态方法、静态类、实例成员及区别
- 静态成员、静态方法、静态类、实例成员及区别
- C#扫盲之:静态成员、静态方法、静态类、实例成员及区别
- 类的静态数据成员在 类内只能声明,定义和初始化必须在类外
- 实例成员变量不能在静态方法中访问
- 牛客网Java刷题知识点之为什么static成员方法不能是抽象方法,其必须实现
- java线程安全问题之静态成员变量、实例成员变量、局部变量
- 类的静态方法(函数)中为什么不能调用非静态成员(属性)?
- C# 静态类与非静态类、静态成员的区别
- 深入理解C# 静态类与非静态类、静态成员的区别
- C++中的静态成员函数不能访问非静态成员
- 静态数据成员必须赋初值
- 编写高质量代码改善C#程序的157个建议[优先考虑泛型、避免在泛型中声明静态成员、为泛型参数设定约束]
- C++: 静态成员函数不能访问非静态成员的道理
- 静态库中应慎用静态类成员