gpt4 book ai didi

c# - block 基构造函数到子类

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

我确定这个问题在其他地方,但找不到。

我有一个抽象类,它将作为其他类的基础。 希望基类的基构造函数不可访问,并且子类无法编辑行为,从而迫使它们使用另一个构造函数。

public abstract class BaseClass
{
protected int X;
private BaseClass() { } // Problematic accessor
public BaseClass(int x)
{
X = x;
}
}

public class Child : BaseClass
{
public Child(int x)
{
X = x + 5;
}
}

如果我将 BaseClass() 基构造函数设置为私有(private),它不会编译,但如果我将它设置为 protected ,则 Child 可以覆盖它。

有办法阻止 Child 修改基础构造函数吗?

编辑:我希望基础构造函数在类外也不可访问。

最佳答案

如果你不想在

中做任何事情
  BaseClass()

构造函数,只需删除它(BaseClass 有一个显式构造函数,这就是为什么没有默认 一):

  public abstract class BaseClass
{
//TODO: probably you want a property to read X
private int X; // <- private looks better for fields
public BaseClass(int x)
{
X = x;
}
}

对于 Child 类,您必须调用其基础构造函数,即 base(int x):

public class Child : BaseClass
{
public Child(int x)
: base(x + 5) // since X is private, let's move logic into the call
{
}
}

关于c# - block 基构造函数到子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32521170/

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