关于C#静态构造函数的几点说明

静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。
  

class SimpleClass
{
    // Static constructor
    static SimpleClass()
    {
        //
    }
}

  在使用静态构造函数的时候应该注意几点:

  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。
  
  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

  3、一个类只能有一个静态构造函数。

  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

  5、最多只运行一次。

  6、静态构造函数不可以被继承。

  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

转载于:https://www.cnblogs.com/musicz/archive/2009/04/17/1437749.html

关于c# 静态构造函数的说明相关推荐

  1. [转载]静态构造函数

    静态构造函数的理解     class Program     {         static void Main(string[] args)         {             Cacu ...

  2. Effective C# 原则13:用静态构造函数初始化类的静态成员(译)

    Effective C# 原则13:用静态构造函数初始化类的静态成员 Item 13: Initialize Static Class Members with Static Constructors ...

  3. 什么是泛型缓存和静态构造函数?

    泛型:运行原理 1,泛型没有写死类型,调用的时候指定类型,这个是延时声明 2,延时声明,把参数类型的声明推迟到调用, 3,在即时编译中将泛型代码生成了原生代码,根据不同的类型生成不同的副本,等待程序去 ...

  4. 由单例模式学到:静态构造函数和静态字段

    编译器在编译的时候,会事先分析所需要的静态字段,如果这些静态字段所在的类有静态的构造函数,则忽略静态字段的初始化,否则先进行静态字段的初始化.对类的静态成员初始化的顺序取决于在Main函数中的引用顺序 ...

  5. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...

    1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...

  6. 子类如果不实例化则不会调用它自身的静态构造函数

    using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Conso ...

  7. C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序

    https://www.cnblogs.com/ArtofDesign/p/3603986.html 默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字 ...

  8. C#静态构造函数总结

    今天花了一些时间把静态构造函数的用法总结了一下,希望高手们指点.谢谢! 静态构造函数既没有访问修饰符,也没有参数. 如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生 ...

  9. c#中的静态构造函数

    静态构造函数是C#的一个新特性,其实好像很少用到.不过当我们想初始化一些静态变量的时候就需要用到它了.这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次.也就是在创建第一个 ...

  10. c#只读字段和常量的区别,以及静态构造函数的使用 .

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

最新文章

  1. RESTful Web 服务 - 无状态
  2. 我的新书《Java编程讲义》新鲜出炉啦,欢迎订阅
  3. Jaxb对xml报文头的小修小改
  4. 洛谷 P3367 ---- 【模板】并查集
  5. 信息学奥赛一本通(1026:空格分隔输出)
  6. matelab中simulink报错改正方法
  7. linux中使用ntpdate命令进行时间更新时出现the NTP socket is in use, exiting
  8. 完整的python项目实例-python完整项目
  9. 厦门理工学院计算机毕业要求,计算机教学中心-厦门理工学院教务处.PDF
  10. 免费好用的 Apple 工具(Windows 适用)
  11. 51单片机串口输出某些汉字乱码修复补丁(支持所有keil版本)
  12. Linux编译DuiLib库报error: no matches converting function ‘ItemComareFunc’ to type ‘__compar_d_fn_t错误解决
  13. response.addheader详解
  14. mysql出现1048_MySQLdb_异常操作错误:(1048,“……不能为空”)
  15. 白底图片转换为蓝底图片
  16. RuoYi-Vue部署服务器流程
  17. Linux命令之输出文件尾部内容tail
  18. SQL数据库——分组查询GROUP BY
  19. 学计算机专业表情包,大学专业恶搞表情包,你中枪了吗
  20. Linux查看磁盘使用情况

热门文章

  1. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之22---BDS的分发流程...
  2. Maven的Snapshot版本与Release版本
  3. Html+CSS基础之img标签
  4. 153. Find Minimum in Rotated Sorted Array找其中的最小值
  5. 删除none的images
  6. 线性表之顺序存储结构
  7. Django03-视图系统views
  8. css各种居中解决方法
  9. 【33.20%】【LA 4320】【Ping pong】
  10. C++进阶之函数模板