gpt4 book ai didi

c# - 如何拥有一个密封的构造函数?

转载 作者:太空宇宙 更新时间:2023-11-03 17:13:47 24 4
gpt4 key购买 nike

我有一个具有公共(public)构造函数的基类。

基类不是密封的,也不是抽象的。

我希望密封一个构造函数。这可能吗?

我当前的尝试导致语法错误,提示无法密封构造函数。

public sealed MyBase(string someParam)

附加:

我希望能够直接实例化基类并访问密封的构造函数。派生类不能通过派生构造函数使用该构造函数。例如。

public MyDerived() : base(string cant_access_my_sealed_constructor)

最佳答案

你不能那样做。如果构造函数是public,您可以从派生类的构造函数中调用它。但是你可以做一些接近的事情——你可以有一个 private 构造函数和一个调用它的 public static 方法:

class MyBase
{
private MyBase(string someParam)
{
// some code
}

public static MyBase Create(string someParam)
{
return new MyBase(someParam);
}

protected MyBase() // or some other protected or public constructor
{ }
}

class MyDerived : MyBase
{
public MyDerived()
: base("foo") // won't compile, as requested
{ }
}

关于c# - 如何拥有一个密封的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604693/

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