c#类型构造器
c# 类型 构造
2023-06-13 09:14:40 时间
主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例:
复制代码代码如下:
classSomeType{
staticSomeType(){}
}
jit编译器在编译一个方法时,会查看代码引用哪些类型。任何类型定义了类型构造器,jit编译器都会检查当前AppDomain是否已经执行了这个类型构造器,如果没有就执行,已经执行了就直接返回,不再次执行。在多线程的环境下,可能同一时间有多个执行相同的方法,CLR希望每一个AppDomain中一个类型构造器只执行一次,在调用类型构造器时,使用互斥线程同步锁,解决这个问题。
类型构造器中只能访问类型的静态字段,一般只是初始化这些字段。
代码内联初始化字段:
classSomeType
{
Staticintx=5;
}
等价于
classSomeType
{
Staticintx;
StaticSomeType()
{
x=5;
}
}
还有:
classSomeType
{
Staticintx=3;
StaticSomeType()
{
x=5;
}
}
等价于
classSomeType
{
Staticintx;
StaticSomeType()
{
x=3;
x=5;
}
}
虽然c#不允许值类型为它的实例化字段使用内联初始化语法,但是静态字段可以的,以上把class改成struct一样可以运行,
主要原因是:值类型可以定义无参类型构造器,但是不可以定义无参类型实例构造器。
相关文章
- [C#] 走进 LINQ 的世界
- c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- 【100个 Unity实用技能】| C# 检查字典中是否存在某个Key的几种方法
- C# md5 算法实现代码的案例分享
- C# Timer控件学习之使用Timer解决按钮幂等性问题案例分享
- 在C#中如何List去除重复元素?
- c#不可变类型
- 【地铁上的Redis与C#】数据类型(八)--set类型基本操作
- 【地铁上的Redis与C#】数据类型(九)--set类型数据扩展操作(一)
- C# 使用throw;throw ex;和 throw new Exception();抛异常区别与建议
- C#/.NET公共类型系统(CTS)
- C#/.NET CTS和CLS:公共类型系统和公共语言规范
- C操作Oracle数据库的引用实践(c# 引用 oracle)
- C#可空类型分析
- 数据库数据类型float到C#类型decimal,float数据类型转化无效
- c#钩子学习笔记
- C#基础知识全面解析可空类型
- 关于c#中枚举类型支持显示中文的扩展说明
- 用C#控制Windows系统音量的实现方法
- 解析C#中委托的同步调用与异步调用(实例详解)
- c#泛型类型参数与约束的深入分析
- C#图片与二进制转换的简单实例
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- 支持多类型数据库的c#数据库模型示例
- c#判断磁盘驱动器类型的两种方法介绍
- c#注册表操作类分享
- c#测试反射性能示例
- C#中string.format用法详解
- C#转换日期类型实例
- 基于C#实现的木马程序实例详解