2011-12-05 51 views
2

可能重复:
What is the use of making constructor private in a class?为什么有一个私有构造

为什么你会拥有一个私人的构造?

他们有什么好处,什么时候以及为什么要在公共构造函数上使用它。

+0

@JohnSaunders是啊,听起来像我经历了从招聘运行,“请填写此技术筛选和电子邮件的答案回到我身边,我会把它转发给雇主。“ –

+0

它不是一个家庭工作的问题,我一直在做训练,它突然出现,但一天结束时,每个人都回家了,没有人会问。 –

+0

@aspect:看起来他们正在训练你解答面试问题。 –

回答

2

(由于欺骗不是特定于C#)

  1. 在.NET 2.0之前,这是一个技巧,使一个类的静态。私人ctor防止实例化。
  2. 创建单例模式。实例化可以通过GetInstance成员来控制。
  3. 再利用和/或控制的构造函数代码:
class Foo 
{ 
    private Foo()     { /* common ctor code */ } 
    public Foo(int x)  : this() { /* from int */   } 
    protected Foo(string s) : this() { /* from string */  } 
} 
2

当你不想让你的类通过new运算符实例化时,你有一个私有构造函数。

它可以通过静态工厂方法或其他机制实例化。

+0

因此,当你调用一个类的静态方法并返回时,可以使用它,并且作为类的实例化对象。 –

+0

即使这是一个面试问题,我认为大多数公司都足够聪明,可以提出更多与此相关的问题,看看他是否理解他所说的话。至少,这发生在我身上:)另外,是的+1静态工厂和控制创建是私有构造函数最有用的场景。另外在C++中很适合创建C#的“静态类”。 – dowhilefor

1

我确定有很多原因,但跳出来的第一个原因是,如果您创建的是单例对象,您不需要公共构造函数就可以使用私有对象。

4

私有构造函数意味着该类只能在其自身内部创建。

它通常与static工厂方法一起使用来创建类。
这迫使人们只通过工厂方法实例化类。

相关问题