2016-12-03 9 views
3

私は、次の操作を実行しようとしてきた。問題はどこにあるので、ここでC#リスト<リスト<object[]>>()問題 - 奇妙な行動

public List<T> InitList<T>(int count, T initValue) 
     { 
      return Enumerable.Repeat(initValue, count).ToList(); 
     } 

を持つ

public List<List<object[]>> Queue = new List<List<object[]>>(); 
Queue = InitList(MaxLayerCapability, new List<object[]>()); 

は次のとおりです。

Queue[2].Add(new object[] { "Draw", "Test" }); 

      for (int i = 0; i < MaxLayerCapability; i++) 
      { 
       Console.WriteLine(i + ">" + Queue[i].Count); 
       //Operate(Queue[i], i); 
      } 

何らかの理由で、Queue [2]に要素が含まれ、他のすべてのリスト(Queue [0]など)に0のカウントを持っている

それはキューに、任意のアイデアをすべての要素を押していくつかの時点でですか?

は、ここで私が得てんだよ:事前に

0>1 
1>1 
2>1 
3>1 
4>1 
5>1 

感謝。

答えて

2

問題は、私が理解するように、リピートはListの同じインスタンスへの参照を繰り返すだけです。 私はそれをこのようにリファクタリングになります。私はこのようfucntionを使用する場合

public IEnumerable<T> InitList<T>(int count) 
{ 
    for (int i=0;i<count; i++) 
    { 
    yield return Activator.CreateInstance<T>(); 
    }    
} 

を私は正しい結果を参照してください。

Queue = InitList<List<object[]>>(3).ToList(); 
+0

あなたのソリューションは、働いています!どうもありがとうございました。 – John

関連する問題