2012-01-09 8 views
0

シナリオの簡単な例を私はは、実行時に動的カウント値に基づいてオブジェクトを作成する - C#

class ATest 
{ 
    int a; 
    int b; 
    BTest[]; 
} 

class BTest 
{ 
    int X; 
    int Y; 
} 
  • を実装しようとしています、私は値に基づいて動的にATestBTestを作成する必要があります。
  • 私はAtest[] aobj = new Atest[count];(このカウント値がプログラムで設定されます)
  • として、それを試してみました今、私は動的にBのオブジェクトの配列を作成し、A
  • に割り当てる必要があり現在、私は、カウントのために静的な値を仮定し、それを割り当て

    Atest[] aobj = new Atest[20]; 
    BTest[] bobj = new BTest[1]; 
    bobj[0] = new Btest(); 
    aobj[0] = new ATest(); 
    aobj[0].BTest = bobj; 
    BTest[] bobj1 = new BTest[1]; 
    bobj1[0] = new Btest(); 
    aobj1[0].BTest = bobj1; 
    

これは、コードへの最善の方法ではないかもしれません。

動的にそれを を実装する上で示唆してください - 動的BTestオブジェクト配列の数を作成し、ATestインスタンス

+0

アレイの容量をリセットする場合(BTestまたはATest)カウントセッター? –

+0

私はクラスのアプローチを使用する場合、私はそれが動的にAtestオブジェクトとBtestオブジェクトを作成する目的を解決すると思います。 – Siva

答えて

2

のためにそれを割り当てるコンストラクタを使用してみてください:

class ATest { 
    int a; 
    int b; 
    BTest[] btests; 
    public ATest(int numOfB) { 
     btests = new BTest[numOfB]; 
    } 
} 

ザ・あなたはあなたのatestsを作成し、初期化することができます単純ループ:

int M = 20; // Number of Test A objects 
int N = 10; // Number of Test B objects per Test A 
var atests = new ATest[M]; 
for (var i = 0 ; i != M ; i++) { 
    atests[i] = new ATest(N); 
} 
+0

私はそれを試みます。答えをありがとう – Siva

関連する問題