【问题标题】:C# static class constructorC# 静态类构造函数
【发布时间】:2011-10-07 00:02:31
【问题描述】:

有没有办法解决如何为静态类创建构造函数?

我需要在类初始化时加载一些数据,但我只需要一个对象。

【问题讨论】:

    标签: c# class static constructor


    【解决方案1】:

    C#为此目的有一个静态构造函数。

    static class YourClass
    {
        static YourClass()
        {
            // perform initialization here
        }
    }
    

    来自 MSDN

    静态构造函数用于初始化任何静态数据,或 执行只需要执行一次的特定操作。它 在创建第一个实例之前自动调用 静态成员被引用

    MSDN link

    【讨论】:

    • 请注意,YourClass 不一定是 static
    • 公平地说,原发帖人确实专门询问了静态类的构造函数。
    【解决方案2】:

    静态构造函数如下所示

    static class Foo
    {
        static Foo()
        {
             // Static initialization code here
        }
    }
    

    第一次使用该类型时只执行一次。所有类都可以有静态构造函数,而不仅仅是静态类。

    【讨论】:

    【解决方案3】:

    是的,一个静态类可以有静态构造函数,这个构造函数的使用就是静态成员的初始化。

    static class Employee1
    {
        static int EmpNo;
        static Employee1()
        {
            EmpNo = 10;
            // perform initialization here
        }
        public static void Add()
        { 
    
        }
        public static void Add1()
        { 
    
        }
    }
    

    当您可以访问具有类名 Class1

    的静态类的任何类型成员时,静态构造函数只会被调用一次

    假设您正在访问第一个 EmployeeName 字段,然后这次调用构造函数,之后它不会被调用,即使您将访问相同类型的成员。

     Employee1.EmployeeName = "kumod";
            Employee1.Add();
            Employee1.Add();
    

    【讨论】:

      【解决方案4】:

      Static constructor 只调用创建的类的第一个实例。

      像这样:

      static class YourClass
      {
          static YourClass()
          {
              //initialization
          }
      }
      

      【讨论】:

        【解决方案5】:

        我们可以创建静态构造函数

        static class StaticParent 
        {
          StaticParent() 
          {
            //write your initialization code here
        
          }
        
        }
        

        而且总是少参数。

        static class StaticParent
        {
            static int i =5;
            static StaticParent(int i)  //Gives error
            {
              //write your initialization code here
            }
        }
        

        而且它没有访问修饰符

        【讨论】:

          【解决方案6】:

          您可以使用静态构造函数来初始化静态变量。静态构造函数将是您的类的入口点

          public class MyClass
          {
          
              static MyClass()
              {
          
                  //write your initialization code here
              }
          
          }
          

          【讨论】:

          • 静态构造函数没有访问修饰符,这将是一个编译错误
          猜你喜欢
          • 1970-01-01
          • 2011-04-19
          • 2018-01-12
          • 2011-05-06
          • 2014-03-14
          • 2014-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多