gpt4 book ai didi

c# - 只有私有(private)构造函数的抽象类

转载 作者:行者123 更新时间:2023-12-02 10:49:13 25 4
gpt4 key购买 nike

为什么要允许编译这段代码?

public abstract class AbstractPrivateBase
{
private AbstractPrivateBase() { }
}

继承者不能实例化自己。因此,没有办法从这个类派生。我觉得 Visual Studio(甚至 Resharper)应该显示一个错误,说明“抽象类不能只包含私有(private)构造函数”。因为在语言中允许这样做是没有意义的。

唯一可能的用途是此类包含静态成员。如果是这种情况,一个友好的警告说明,“只有私有(private)构造函数的抽象类可以变成静态的。”因为除了静态成员之外,没有其他方法可以访问任何其他成员。

最佳答案

如果您从该私有(private)基础派生一个嵌套类,这将非常有意义:

public abstract class AbstractPrivateBase {
public static AbstractPrivateBase D1 = new Derived1();
public static AbstractPrivateBase D2 = new Derived2();
public static AbstractPrivateBase D3 = new Derived3();
private AbstractPrivateBase() { }
private class Derived1 : AbstractPrivateBase {
}
private class Derived2 : AbstractPrivateBase {
}
private class Derived3 : AbstractPrivateBase {
}
}

类(class) Derived1通过 Derived3可以访问 private AbstractPrivateBase()构造函数,所以这个技巧有效地限制了对嵌套类的派生。

关于c# - 只有私有(private)构造函数的抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com