时间:2021-05-20
主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例:
复制代码 代码如下:
class SomeType{
static SomeType(){}
}
jit编译器在编译一个方法时,会查看代码引用哪些类型。任何类型定义了类型构造器,jit编译器都会检查当前AppDomain是否已经执行了这个类型构造器,如果没有就执行,已经执行了就直接返回,不再次执行。在多线程的环境下,可能同一时间有多个执行相同的方法,CLR希望每一个AppDomain中一个类型构造器只执行一次,在调用类型构造器时,使用互斥线程同步锁,解决这个问题。
类型构造器中只能访问类型的静态字段,一般只是初始化这些字段。
代码内联初始化字段:
复制代码 代码如下:
class SomeType
{
Static int x = 5;
}
等价于
复制代码 代码如下:
class SomeType
{
Static int x;
Static SomeType()
{
x = 5;
}
}
还有:
复制代码 代码如下:
class SomeType
{
Static int x = 3;
Static SomeType()
{
x = 5;
}
}
等价于
复制代码 代码如下:
class SomeType
{
Static int x;
Static SomeType()
{
x = 3;
x = 5;
}
}
虽然c#不允许值类型为它的实例化字段使用内联初始化语法,但是静态字段可以的,以上把class改成struct一样可以运行,
主要原因是:值类型可以定义无参类型构造器,但是不可以定义无参类型实例构造器。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C#方法1:实例构造器和类2:实例构造器和结构3:类型构造器4:操作符重载方法5:转换操作符方法6:扩展方法7:部分方法1:实例构造器和类构造器是允许将类型的实
创建类:class后跟类名,其中类名的首字母必须要大写。实例化时,通过new方法实例化。在c#中有构造器,构造器与类同名。在ruby中,构造器为initiali
1.定义类型复制代码代码如下:functionUserObject(parameter){}parameter可省略,相当于C#中构造函数参数。2.实例化自定义
C#中new的用法有三种:(1)new是运算符,用于创建对象和调用构造函数。如Class1=newClass1();也可以为值类型调用默认的构造函数如inta=
我们继续自学C#编程教程,在上一课中介绍了C#的基本数据类型以及变量,今天这一节课我们来介绍值类型与引用类型!一、什么是值类型与引用类型?C#与大多数面向对象语