本文主要是介绍构造函数、static静态构造函数(C#特有)、对象初始化语句(C#特有),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C#中的构造函数与C++中类似,如果希望能从类的外部创建类的实例,需要将构造函数声明为public,如果类的声明中没有显式的提供实例构造函数,那么编译器会提供一个隐式的默认构造函数,它没有参数,方法体为空,如果你为类声明了任何构造函数,那么编译器将不会为该类定义默认构造函数,这时如果不主动声明默认构造函数的话,当在使用不带参数的构造函数创建新的实例时,则会出错。
静态构造函数(C++中不存在,C#中存在,可以初始化静态字段)
构造函数也可以声明为static,实例构造函数初始化类的每个新实例,而static构造函数初始化类级别的项,通常,静态构造函数初始化类的静态字段。
静态构造函数与实例构造函数的不同:
(1)静态构造函数声明中使用static关键字
(2)类只能有一个静态构造函数,而且不能带参数
(3)静态构造函数不能有访问修饰符
静态构造函数的使用:
(1)类既可以有静态构造函数也可以有实例构造函数
(2)如同静态方法,静态构造函数不能访问所在类的实例成员,因此也不能使用this访问器
(3)不能从程序中显示调用静态构造函数,系统会自动调用它们,在类的任何实例被创建之前、类的任何静态成员被引用之前,例如new个对象的时候,系统会先调用到静态构造函数(在已经定义的情况下),然后在调用默认构造函数。
class Program{static Program(){Console.WriteLine(999); //先打印}public Program(){Console.WriteLine(100); //后打印}static void Main(string[] args){Program p = new Program();}}
对象初始化语句(C++中没有)
一般情况下,对象创建表达式由关键字new后面跟着一个类构造函数及其参数列表组成,对象初始化语句扩展了创建语法,在表达式的尾部放置了一组成员初始化语句,这允许在创建新的对象时,设置字段和属性的值。,俩种形式,一种包括构造函数的参数列表,一种不包括。
初始化语句发生在构造方法执行之后,因此在构造方法中设置的值会在之后对象初始化中重置为其他的值
class Program{public int a = 1;public int b = 2;Program(){a = 11;b = 22;}static void Main(string[] args){Program p = new Program();Program p2 = new Program { a = 10, b = 20 };Console.WriteLine(p.a); //11Console.WriteLine(p.b); //22Console.WriteLine(p2.a); //10Console.WriteLine(p2.b); //20}}
在程序中加断点调试可以看到在执行p2的构造过程时,先执行的int a=1; int b=2;然后在执行的Program构造函数,最后在进行的对象初始化语句,相当于a、b被赋值了3次,最后的值才为a=10 b=20
这篇关于构造函数、static静态构造函数(C#特有)、对象初始化语句(C#特有)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!