2010-01-27 96 views
7

我怀疑静态类可以包含一个私有构造函数。我们可以在静态类中使用私有构造函数吗?

+6

如果你有Visual Studio的(或类似)的安装,我的猜测是,它会带你不到1分钟来编译和检查自己这一点... – 2010-01-27 09:39:44

+3

约翰,这是没有理由不问这个问题。查看常见问题。 – 2010-01-27 09:47:04

回答

6

静态类不能有任何实例构造函数(请参阅CS0710),无论是公共,私有,受保护或内部。

有关更多信息,请参阅以下文章。

Static Classes and Static Class Members (C# Programming Guide)

+0

@jonathan:我在Reflector中查看'public static class',但只能找到'private static void .cctor()'静态构造函数。这个私人实例构造函数在哪里? – 2010-01-27 09:28:05

5

什么会此构造吗?该类是静态的,所以它从来没有实例化。你可以在非静态类上有一个静态构造函数来初始化静态字段,但是在静态类上,唯一有意义的构造函数是静态构造函数,并且被称为CLR。

加成Jon Skeet posted an article对静态类的初始化的时间(通常它的初始化在第一次使用,但有时你想在程序启动时进行初始化),并在.NET 4 可能变化。

+0

@Jonathan Wow,这很奇怪。我试图想想如何有用,但他们取而代之,我认为他们有相同的结论:) – 2010-01-27 09:16:37

+0

@Jonathan告诉CLR一个_static_类不能被实例化为Real吗? – 2010-01-27 09:22:09

3

您的疑问是正确的。

一个静态类只能有一个静态构造函数,而public/private不适用,因为你的代码永远不能调用这个构造函数(CLR)。

因此,您不能在静态构造函数上使用访问修饰符(public/private/...)。

2

规则是静态类不能有实例构造

相关问题