C#构造函数,静态构造函数,私有构造函数详解
作者:C/S框架网  发布日期:2011/07/20 22:35:53
C#构造函数,静态构造函数,私有构造函数详解

构造函数又称构造器:Constructor
静态构造函数: Static Constructor
私有构造函数: Private Constructor

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

静态构造函数具有以下特点:
1.静态构造函数既没有访问修饰符,也没有参数。
2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化 类。
3.无法直接调用静态构造函数。
4.在程序中,用户无法控制何时执行静态构造函数。

静态构造函数举列:
输出结果:
The static constructor invoked.
The Drive method invoked.
public class Bus
{
   // Static constructor:
   static Bus()
   {
      System.Console.WriteLine("The static constructor invoked.");
   }
   
   public static void Drive()
   {
      System.Console.WriteLine("The Drive method invoked.");
   }
}

class TestBus
{
   static void Main()
   {
      Bus.Drive();
   }
}


构造函数是在创建给定类型的对象时执行的 类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
不带参数的构造函数称为“默认构造函数”。无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。

public class Taxi
{
   public bool isInitialized;
   public Taxi()
   {
      isInitialized = true;
   }
}

class TestTaxi
{
   static void Main()
   {
      Taxi t = new Taxi();
      System.Console.WriteLine(t.isInitialized);
   }
}

私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。例如:
声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。

当没有实例字段或实例方法(如 Math 类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。如果类中的所有方法都是静态的,可考虑使整个类成为静态的。

class NLog
{
   // Private Constructor:
   private NLog() { }
   
   public static double e = System.Math.E; //2.71828...
}
public class Counter
{
   private Counter() { }
   public static int currentCount;
   public static int IncrementCount()
   {
      return ++currentCount;
   }
}

class TestCounter
{
   static void Main()
   {
      Counter.currentCount = 100;
      Counter.IncrementCount();
      System.Console.WriteLine("New count: {0}", Counter.currentCount);
   }
}
上一篇 下一篇