zoukankan      html  css  js  c++  java
  • c# 静态构造函数与私有构造函数共存

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

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

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

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

      5、最多只运行一次。

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

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

      exp:

      public class TestClass
      {
        private TestClass()
        {
          Console.WriteLine("私有");
        }

        public void PublicFunc()
        {
          Console.WriteLine("方法");
        }

        private static readonly TestClass m_instance;
        public static TestClass Instance
        {
          get {return m_instance; }
        }
        static TestClass()
        {
          Console.WriteLine("静态");
          m_instance = new TestClass();
        }

        static void Main(string[] args)
        {
          TestClass.Instance.PublicFunc();
          Console.ReadKey();
        }

      }

      执行结果如下:

      

      先调用静态构造函数,在静态构造函数中新建类的实例,然后调用类的私有构造函数,最后调用类的公共方法

      

  • 相关阅读:
    构建高性能可扩展asp.net网站--20130628
    全文索引构建的语句
    一些常用的数据性能查看命令
    【Mongodb教程 第一课 】 MongoDB下载安装
    【Mongodb教程 第一课 补加课】 Failed to connect to 127.0.0.1:27017, reason: errno:10061 由于目标计算机积极拒绝,无法连接
    一个关于MYSQL IFNULL的用法
    如何查看网站的在全国各地的打开速度
    JS 省市区三级联动
    JS地区四级级联
    简单JS全选、反选代码
  • 原文地址:https://www.cnblogs.com/yeshenmeng/p/9417897.html
Copyright © 2011-2022 走看看