何时以及为什么要将静态构造函数设为私有?

时间:2014-09-04 06:45:20

标签: c# constructor

我知道静态构造函数和私有构造函数之间的区别以及何时使用它们。但是,什么时候应该将静态构造函数设置为私有,这样做有什么好处?

3 个答案:

答案 0 :(得分:2)

C#中的静态构造函数不允许访问修饰符,它们(在某种程度上)总是公共的,这意味着框架总是可以访问它们以执行特定于类型的初始化。将publicprivate添加到静态构造函数将无法编译。

private构造函数始终是一个实例私有构造函数,这是一个不同的东西,在创建单例时最常用,以防止通过用户代码显式实例化类。

答案 1 :(得分:1)

静态构造函数应该始终是私有的。

<强>为什么?

通常,即使在创建该类的第一个实例之前,框架也会调用静态构造函数。这将创建一个可供使用的单一类型的实例。

但是,如果构造函数不是私有的,则意味着其他对象也可以创建实例。这可能会导致意外行为。

因此,静态构造函数应该始终是私有的。

答案 2 :(得分:0)

private关键字实际上并没有在C#中执行任何操作。默认情况下,所有内容都已private,但非嵌套类型除外internal,因为它们不能是private

这些天我从不使用private关键字,只是噪音。

注意:这仅适用于C#。在Visual Basic中,默认的可见性不合理,您需要在适当的位置明确使用Private