0

サーバーから来た文字列からlistitemsを生成する次のコードがあります。コードは次のとおりです。

foreach (String str in years)
            {

                if (string.IsNullOrEmpty(str) || str.Equals(" "))
                {
                    System.Diagnostics.Debug.WriteLine("empty");
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine(str);
                    yearLi.Value = str;
                    yearList.Add(yearLi);
                    count = yearList.Count;
                }
                System.Diagnostics.Debug.WriteLine("count-->" + count);

            }

ここで私の問題は、文字列配列「years」に{2011,2012}がある場合、リストは2011と2012である必要があります。しかし、2012,2012があります。このコードで障害を見つけることができません。ご意見をお聞かせください。

4

1 に答える 1

8

ループのすべてのサイクルで同じyearLiオブジェクトを再利用しています。これを行うとき:

yearList.Add(yearLi);

毎回同じオブジェクトを追加しています。また、次にループを介して変更すると、リストのすべてのセルで変更されます(すべて同じオブジェクトへの参照であるため)。

yearLiループ内でインスタンス化された新しい(想定されているクラスが何であれ)必要があります。

于 2012-10-26T17:32:09.833 に答える