静态构造函数操作的是类(而非其实例的)成员。
静态构造函数(.cctor)的一些特点:
1. 声明和定义形式上,只能有static一个修饰符,不能有任何修饰符和返回值(也不能有void)。
2. 不能被显示调用,由CLR调用。
3. 最多只能调用一次。
4. 静态构造函数中只能调用静态字段和静态属性,方法等,不能操作实例字段,属性,方法等。
5. 静态构造函数需要时必须显示定义,只能最多一个。
6. 如果静态字段有直接赋值语句,并且定义了静态构造函数,则生成的IL中,会先执行该赋值语句,然后执行静态构造函数的中的代码。
7. 不同于实例构造函数,静态构造函数生成的代码中,不含有对基类任何构造函数的调用。
8. 如果定义了静态构造函数,则静态构造函数的调用一定会在实例构造函数调用之前发生(由于对基类的实例构造函数的调用是在派生类的实例构造函数中,故而,如果基类有静态构造函数但基类尚未被加载,则基类的静态构造函数的调用依然晚于派生类的静态构造函数。基类的静态构造函数调用发生在派生类的构造函数生成的IL中,内联初始化实例字段后,基类实例构造函数调用之前)。
9. 没有显示声明静态构造函数时,即使有静态字段,生成的IL中也不一定有静态构造函数.cctor,但CLR会在运行时执行一个系统生成的.cctor。调用的时机是程序集加载到类第一次被实例化(或类静态成员第一次被调用)之前,但时机由CLR决定,无法准确判断。
10. 若显示声明了静态构造函数,则静态构造函数的调用实际是在类静态第一次被访问或者类第一次被实例化(即类加载时),只会被调用这一次。
11. 可以看出,静态构造函数的调用发生在类加载时,且在实例构造函数调用之前。

C#的静态构造函数.cctor的更多相关文章

  1. 静态构造函数c# 静态块java initallize oc

    静态构造函数c# 静态块java initallize oc 先看一道常见题目,以下代码的执行结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 ...

  2. c#静态构造函数 与 构造函数 你是否还记得?

    构造函数这个概念,在我们刚开始学习编程语言的时候,就被老师一遍一遍的教着.亲,现在你还记得静态构造函数的适用场景吗?如果没有,那么我们一起来复习一下吧. 静态构造函数是在构造函数方法前面添加了stat ...

  3. 深入了解C#中的静态变量和静态构造函数

    深入的剖析C#中静态变量和静态构造函数: 在日常的程序开发过程经常会使用到静态变量,众所周知,静态变量时常驻内存的变量,它的生命周期是从初始化开始一直到Application结束.但是,我们经常会忽略 ...

  4. 关于c#静态构造函数

    http://baike.baidu.com/view/2634573.htm?fr=aladdin 在百科上看到C#的新特性静态构造函数,其中提到静态构造函数“不能继承” 今天做了个试验,发现实际上 ...

  5. c#静态构造函数

    作用是初始化一些类的静态成员 1.在实例化类的对象,或者引用任何的静态成员之前,.Net自动调用此构造函数,而且只调用一次 2.没有任何修饰符,也没有参数 3.一个类只能有一个静态构造函数 4.无参的 ...

  6. java 静态构造函数

    在java中貌似是没有静态构造函数的. 不过用下面的方式同样可以实现效果. static { }//end 这是静态代码块

  7. .NET基础:C#静态构造函数、静态方法、静态属性

    用一个题目带大家走进静态函数,先看题目 class Program    {        public static int Count = 0;        static Program()   ...

  8. (转)C#静态构造函数

    静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量. 因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第 ...

  9. C#中静态构造函数含义及使用

    static以前都接触过,可是最近才发现了还有静态类的写法,也可能是以前没太注意了,所以自己去研究了一下! 1.什么是构造函数: 1.1 例如:static  Class{} 1.2 使用静态函数的注 ...

随机推荐

  1. Maven 整合SSH框架之pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  2. 从es中拉取全部数据/大量数据 使用scroll+scan避免深分页

    es一次请求默认返回的数据条数是10条,可以通过设置size参数来控制返回数据的条数: 如果要返回很多数据,可以把size设置的很大,不过elastic search默认size最大不能超过1万. 那 ...

  3. python并发编程知识点总结

    1.到底什么是线程?什么是进程? Python自己没有这玩意,Python中调用的操作系统的线程和进程. 2.Python多线程情况下: 计算密集型操作:效率低,Python内置的一个全局解释器锁,锁 ...

  4. SQL逻辑查询语句 执行顺序 语法顺序

    SELECT语句语法顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN < ...

  5. [Spring ] RequestParam VS PathVariable

    仔细一想,感觉没啥需要区分的呢.就是简单明确了两种url定义的背景. PathVariable这种,主要是针对restful类型的url.这种path的定义就要根据restful的规范了. 根据昨天开 ...

  6. 算法题 21 findNSum (好未来,LeetCode,牛客网)

    一.三数之和:LeetCode 15 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. ...

  7. python16_day14【jQuery】

    一.作用域 1.作用域例一 <script> var str = "global"; //AO1 AO1.str function t(age){ console.lo ...

  8. thinkphp api架构搭建

    1.结构搭建 模块下面使用 controller , model ,service,validate分别对应的作用 controller控制器里面可以进行分版本 v1,v2之类的,不过要访问通必须配置 ...

  9. VMWare 安装时报错 tools-windows.msi failed报错解决办法

    1.我用的是7.1.3版本的,到官方网站上下载这个版本的tools安装包 http://softwareupdate.vmware.com/cds/vmw-desktop/ws/7.1.3/32428 ...

  10. jQuery图片列表拖拽排序布局

    在线演示 本地下载