c中抽象类中私有构造函数的用途是什么



我在面试中面临以下问题。

Q1.抽象类中可以有一个私有构造函数吗?

答案-是的,我给出了一个我们可以得到的答案,然后他再次问为什么以及私有构造函数有什么用。我无法回答这个交叉问题。有人能解释一下吗?在c#中使用将有很大帮助。

我能想到两种用途:

首先,用于链接。您可能有多个受保护的构造函数,但希望在所有构造函数中执行通用代码:

public abstract class Foo
{
protected Foo(string name) : this(name, 0)
{
}
protected Foo(int value) : this("", value)
{
}
private Foo(string name, int value)
{
// Do common things with name and value, maybe format them, etc
}
}

第二个用途是使其成为唯一可能的派生类是嵌套的类,这些类可以访问私有成员。当我想强制使用有限数量的派生类时,我以前就使用过这种方法,实例通常通过基类公开

public abstract class Operation
{
public static readonly Operation Add { get; } = new AddOperation();
public static readonly Operation Subtract { get; } = new SubtractOperation();
// Only nested classes can use this...
private Operation()
{
}
private class AddOperation : Operation
{
...
}
private class SubtractOperation : Operation
{
...
}
}

相关内容

  • 没有找到相关文章

最新更新