2011-10-09 8 views
0

私はリストのリストでクラスを作成しようとしているが、それは仕事を得ることはできません。カスタムクラスにリスト<T>が含まれている場合、リスト<カスタムクラス>を作成するにはどうすればよいですか?

public class Structure 
{ 
    public List<int> variable1 = new List<int>(); 
    public double variable2 { get; set; } 
} 

public class StructureHolder 
{ 
    public List<Structure> variable3 = new List<Structure>(); 
    public void InitLists() 
    { 
     variable3.Capacity = 1; 
     variable3[0].variable1.Capacity = 20; 
    } 
    public void SomeMethod() 
    { 
     //Perform operations on values storred in variable3[i].variable1 
    } 
} 

今、私はクラスStructureHolderのSomeVariableを作成し、SomeVariable.variable3 [0]をアクセスしようとします。 variable2私は範囲外のエラーを取得します。

EDIT1: があることを修正し、私はまだ範囲例外から抜け出す:

variable3.Capacity = 1; 
variable3.Add(new Structure()); 
variable3[0].variable1.Capacity = 20; 
variable3[0].variable1[0] = 123; //out off range error 

答えて

0

しかしStructureHolder内のリストには、まだ要素が含まれていません。 例を追加する必要があります。

variable3.Capacity = 1; 
variable3.Add(new Structure()); 
variable3[0].variable1.Capacity = 20; 
+0

、しかし、私まだ例外が発生します: – user986548

+0

これを修正しましたが、私はまだ例外を受け取ります:variable3.Capacity = 1; variable3.Add(new Structure()); variable3 [0] .variable1.Capacity = 20; variable3 [0] .variable1 [0] = 123; //範囲外のエラー – user986548

+0

が出てきましたが、構造体リストにintを追加する必要があります。 variable3 [0] .variable1.Add(10); – Marcus

0

あなたが空のリストにアクセスしようとしているからです。あなただけの

public List<Structure> variable3 = new List<Structure>(); 

リストを初期化しませんが、決してそれにいくつかの要素を追加します。

variable3.Add(...); 

だから、あなたがそれにアクセスする前に最初の項目を追加する必要があります。

という固定
variable3.Add(new Structure()); // adding item 
variable3[0].variable2 = 100d; // accessing just added element field 
関連する問題