在C#中編寫類似於實際工作的東西(編譯並運行,但無法正常工作)是否可能?在C#中初始化子類中的父類數組成員
public abstract class Foo
{
public int[] a;
}
public class Bar : Foo
{
public int[] a = new int[123];
}
或者我必須使用它(工作正常,但看起來不如上面的代碼)?
public abstract class Foo
{
public int[] a;
public void Init(int size)
{
a = new int[size];
}
}
public class Bar : Foo
{
public Bar()
{
Init(123);
}
}
定義「正常工作」:您想實現什麼目標?第一個是在基礎類中隱藏「a」,這會變得非常混亂。使用構造函數通常優於重新聲明,但正如所說的,取決於意圖。 – dlatikay
你應該這樣做public int [] a = new int [123];無論是在基本的抽象類中,還是希望子類實現它,您都應該將其標記爲abastract以及public abstract int [] a; – Isma
在Bar中只寫_a = new int [123]; _沒有重新聲明由抽象類繼承的 – Steve