如何在C#中只为特定的子类设置父类中的变量值

  • 本文关键字:子类 设置 变量值 父类 c#
  • 更新时间 :
  • 英文 :


我有三个类别A、B和C。

class A
{
protected string name="demo";
}
class B: A
{}
class C: A
{}

我想在父类A中将name的值设置为"demo1",仅用于子类C,而不用于B。

我怎样才能做到这一点?

您可以向A添加一个构造函数,该构造函数允许您设置值:

class A
{
private string name="demo";
public A() {}
public A(string name)
{
this.name = name;
}
}
class B: A
{}
class C: A
{
public C() : base("demo1")
{
}
}

因为在您的代码中,A有一个私有字段,没有其他类可以看到或修改它。

如果使字段受保护,这意味着它对自身和派生自它的类可见,但从类外部看不到。

class A
{
protected string name="demo";
}
class B: A
{}
class C: A
{
C()
{
name = "ClassC";
}
}

是否可以让它们都实现同一个接口,并让类C从类A继承,而类B只实现接口。这一切都有点模糊,很难说出最好的方法。

使用继承,最简单的解决方案是将指定的变量放在另一个从A继承的类中,并且只由C继承(而B仍然直接从A继承(。

class A
{}
class B: D
{}
class C: A
{}
class D: A 
{
protected string name="demo";
}
class A
{
protected virtual string name="demo";
}
class B: A
{}
class C: A
{
protected override string name="demo1";
}

最新更新