2010-12-07 5 views
1

私は次の多形的なコードを書いています:どのようにconstの引数をC#で抽象クラスの親に渡すのですか?

public abstract class A 
{ 
    readonly int x; 
    A(int i_MyInt) 
    { 
     x = i_MyInt; 
    } 
} 

public abstract class B : A 
{ 
    //holds few integers and some methods  
} 


// concrete object class 
public class C : B 
{ 
    // holds some variables and mathods 
    C(int MyInt) 
    { 
     // here i would like to initialize A's x 
    } 
} 

どのようにCのxを初期化することができます AのC'torにパラメータを渡そうとしましたが、動作しませんでした。事前に感謝 Amitos80

答えて

5

整数をとり、Aのコンストラクタに渡すコンストラクタをBに追加する必要があります。このコンストラクタをCから呼び出すことができます。

public abstract class B : A 
{ 
    public B(int myInt) : base(myInt) 
    { 
     // other initialization here... 
    } 
} 

public class C : B 
{ 
    // holds some variables and mathods 
    public C(int myInt) : base(myInt) 
    { 
     // other initialization here... 
    } 
} 

Aのコンストラクタもプライベートでない必要があります。

+0

+1クラスAのデフォルトのコンストラクタがないので、これはとにかく必要です。 – StriplingWarrior

+0

また、Aのxをprotectedまたはpublicにして、Cのコンストラクタから設定することもできます。 –

+0

ありがとう、たくさんのMark、それは参考になった。 – amitos80

関連する問題