时间:2021-05-19
私有构造函数
私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则其他类(除嵌套类外)无法创建该类的实例。例如:
声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用 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(); }}输出:
注意,如果您取消注释该示例中的以下语句,它将生成一个错误,因为该构造函数受其保护级别的限制而不可访问:
// Counter aCounter = new Counter(); // Error静态构造函数
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
静态构造函数具有以下特点:
静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。
静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。
如果静态构造函数引发异常,运行时将不会再次调用该构造函数,并且在程序运行所在的应用程序域的生存期内,类型将保持未初始化。
在此示例中,类 Bus 有一个静态构造函数。创建 Bus 的第一个实例(bus1)时,将调用该静态构造函数来初始化该类。输出示例验证了即使创建 Bus 的两个实例,该静态构造函数也仅运行一次,并且在实例构造函数运行之前运行。
输出:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文以实例形式分析私有构造函数的特点,以及在何种情况下使用私有构造函数。相信对于大家更好的理解C#中的私有构造函数有一定的促进作用。具体如下:一、带私有构造函数
关于为什么需要创建单例?这里不过多介绍,具体百度知。关于C#创建单例步骤或条件吧1、声明静态变量;2、私有构造函数(无法实例化)3、静态创建实例的方法;至于我这
本文实例讲述了C#中派生类调用基类构造函数用法。分享给大家供大家参考。具体分析如下:这里的默认构造函数是指在没有编写构造函数的情况下系统默认的无参构造函数1、当
本文实例讲述了C#使用this关键字实现串联构造函数调用方法。分享给大家供大家参考。具体分析如下:在一个类中如果需要实现多个自定义构造函数,通常做法是在构造函数
C++中的构造函数与析造函数详解构造函数的概念(1)构造函数是特殊的成员函数(2)当创建类类型的新对象时,系统自动会调用构造函数(3)构造函数是为了保证对象的每