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

Vih*_*hav 2 c# private-constructor

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

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

答案-是的,我给了一个答案,我们可以有那么他再次问为什么,什么是使用私有构造的。我无法回答这个交叉问题。有人可以解释一下吗?实际上在 c# 中会有很大帮助。

Jon*_*eet 11

我可以想到两种用途:

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

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
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个用途是使唯一可能的派生类是嵌套类,它们可以访问私有成员。我以前在想强制执行有限数量的派生类时使用过它,实例通常通过基类公开

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
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)