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

c#中抽象类中私有构造函数的用途是什么?,c#,private-constructor,C#,Private Constructor,我在面试中面临以下问题 我们可以在抽象类中有一个私有构造函数吗 答案-是的,我给出了一个答案,然后他再次询问为什么以及私有构造函数的用途。 我无法回答这个交叉问题。有人能解释一下吗?使用c#将非常有帮助。我可以想到两个用途: 首先,用于链接。您可能有多个受保护的构造函数,但希望在所有构造函数中执行公共代码: 公共抽象类Foo { 受保护的Foo(字符串名称):此(名称,0) { } 受保护的Foo(int值):此(“,值) { } 私有Foo(字符串名,int值) { //用名称和值做一些常见的

我在面试中面临以下问题

我们可以在抽象类中有一个私有构造函数吗

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

我可以想到两个用途:

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

公共抽象类Foo
{
受保护的Foo(字符串名称):此(名称,0)
{
}
受保护的Foo(int值):此(“,值)
{
}
私有Foo(字符串名,int值)
{
//用名称和值做一些常见的事情,可能会格式化它们,等等
}
}
第二个用途是使它成为唯一可能的派生类是嵌套类,它们可以访问私有成员。当我想要强制执行有限数量的派生类,而实例通常通过基类公开时,我曾经使用过这个方法

公共抽象类操作
{
公共静态只读操作Add{get;}=new AddOperation();
公共静态只读操作Subtract{get;}=new SubtractOperation();
//只有嵌套类才能使用此。。。
私人经营()
{
}
私有类AddOperation:操作
{
...
}
私有类操作:操作
{
...
}
}

你知道什么是私人的吧?所以想一想为什么你可能想把它应用到构造函数中。。。你会得到什么好处?功能会发生什么变化?请看,当实例化派生类时,构造函数将始终被执行。但由于抽象类无法实例化,因此不需要公共构造函数,因此您可以而且应该将其设置为受保护或私有。@maccettura,是的,我知道如果我创建了私有构造函数,那么我就无法将该类继承到任何类中,甚至无法创建该类的对象。我给出了这个答案,但他只是问我。那么有什么用呢?为什么我们能够在抽象类中使用私有构造函数呢?我也不能理解他的问题。