C#学习基本概念之构造函数之三--私有构造函数
2016-11-25 17:46
225 查看
私有构造函数是一种特殊的实例构造函数。 它通常用在只包含静态成员的类中。 如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。 例如:
当没有实例字段或实例方法(如 Math 类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。 如果类中的所有方法都是静态的,可考虑使整个类成为静态的。 有关更多信息,请参见静态类和静态类成员。
下面是使用私有构造函数的类的示例。
C#
备注:摘自https://msdn.microsoft.com/zh-cn/library/kcfb85a6.aspx
class NLog { // Private Constructor: private NLog() { } public static double e = Math.E; //2.71828... }声明空构造函数可阻止自动生成默认构造函数。 注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。 但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。
当没有实例字段或实例方法(如 Math 类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。 如果类中的所有方法都是静态的,可考虑使整个类成为静态的。 有关更多信息,请参见静态类和静态类成员。
下面是使用私有构造函数的类的示例。
public class Counter { private Counter() { } public static int currentCount; public static int IncrementCount() { return ++currentCount; } } class TestCounter { static void Main() { // If you uncomment the following statement, it will generate // an error because the constructor is inaccessible: // Counter aCounter = new Counter(); // Error Counter.currentCount = 100; Counter.IncrementCount(); Console.WriteLine("New count: {0}", Counter.currentCount); // Keep the console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } // Output: New count: 101注意,如果您取消注释该示例中的以下语句,它将生成一个错误,因为该构造函数受其保护级别的限制而不可访问:
C#
// Counter aCounter = new Counter(); // Error
备注:摘自https://msdn.microsoft.com/zh-cn/library/kcfb85a6.aspx
相关文章推荐
- C#学习基本概念之构造函数之二(实例构造函数)
- C#学习基本概念之构造函数之一(使用构造函数)
- C#学习基本概念之构造函数之五---编写复制构造函数
- C#学习基本概念之构造函数之五---编写复制构造函数
- C#学习基本概念之构造函数之四--静态构造函数
- C# 委托学习(1) 基本概念学习
- C#学习基本概念之关键字--goto
- c#学习笔记五 面向对象编程的基本概念 接口 继承和多态
- C#学习基本概念之方法
- C#学习基本概念之迭代器(Iterator)
- C#学习基本概念(2000)---语句及语句关键字
- C#学习基本概念(4000)---对象数组object[]
- C#学习基本概念之关键字--override
- C#2.0学习3--面向对象基本概念
- C#学习基本概念之结构与类
- C#学习基本概念---MFC(微软基础类库Microsoft Foundation Classes)
- C#学习基本概念之接口属性
- c#线程学习笔记一---基本概念
- C#学习基本概念之标记语句
- c#学习一:类的基本概念