私有构造函数

私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。例如:

class NLog 
{
   // Private Constructor:
   private NLog() {}

   public static double e = 2.71828;
}

声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用private(私有)修饰符来清楚地表明该类不能被实例化。

当没有实例字段或实例方法(如 Math 类)或调用方法以获得类的实例时,私有构造函数可用于阻止创建类。

示例

下面是使用私有构造函数的类的示例。

// PrivateCtor1.cs
using System;

public class MyClass 
{
   private MyClass() {}
   public static int counter;
   public static int IncrementCounter() 
   {
      return ++counter;
   }
}

class MainClass
{
   static void Main()
   {
      // If you uncomment the following statement, it will generate
      // an error because the constructor is inaccessible:
      // MyClass myObject = new MyClass();   // Error
      MyClass.counter = 100;
      MyClass.IncrementCounter();
      Console.WriteLine("New count: {0}", MyClass.counter);
   }
}
输出
New count: 101

注意,如果您取消注释该示例中的以下语句,它将生成一个错误,因为该构造函数受其保护级别的限制而不可访问:

// MyClass myObject = new MyClass();   // error



FROM: http://blog.163.com/lm_shan/blog/static/1328465200682935119142/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值