C# 强制指定超类中的变量(在编译时)

C# 强制指定超类中的变量(在编译时),c#,C#,我有一个超类,它有一堆变量。 e、 g …等等 我想保证这些变量在编译时被重写,并在继承自这个超类的子类中指定一些有用的内容 有没有一种简单的方法可以做到这一点?让基类中的所有构造函数都将它们作为参数,并从这些构造函数中设置它们: protected BaseClass(string s1, string s2, string s3) { this.s1 = s1; this.s2 = s2; this.s3 = s3; } 希望它们是私有字段,所以派生类不能直接设置

我有一个超类,它有一堆变量。 e、 g

…等等

我想保证这些变量在编译时被重写,并在继承自这个超类的子类中指定一些有用的内容


有没有一种简单的方法可以做到这一点?

让基类中的所有构造函数都将它们作为参数,并从这些构造函数中设置它们:

protected BaseClass(string s1, string s2, string s3)
{
    this.s1 = s1;
    this.s2 = s2;
    this.s3 = s3;
}


希望它们是私有字段,所以派生类不能直接设置它们,对吗

在C中不能有虚拟字段。如果确实需要,可以使用属性,然后重写这些属性并在子类中提供默认值

public class A
{
  private string s1;
  public virtual string S1
  { 
    get { return this.s1; }
  }
}

public class B : A
{
  private string myString = "default";
  public override string S1
  {
    get
    {
      return this.myString;
    }
  } 
}

乔恩,你跟我赌了多少。你一天内收到什么评论?只是想知道:。
// Just for example
public DerivedClass(string x) : base("foo", "bar", x)
{
}
public class A
{
  private string s1;
  public virtual string S1
  { 
    get { return this.s1; }
  }
}

public class B : A
{
  private string myString = "default";
  public override string S1
  {
    get
    {
      return this.myString;
    }
  } 
}