2

私は1つのlistitemを持っていて、このlistitemを1つのプロパティの違いで複数回リストに追加しています...つまり、listitemにはDateOfServiceプロパティがあります..k...次に最初のアイテムをリストに追加しています...問題なく変更していますDateOfServiceプロパティと再度追加...しかし、前に追加されたアイテムDateOfServiceも変更されます....この問題を解決するにはどうすればよいですか...

sampleCode

 if (bills[index].FrequencyId == Convert.ToInt32(Frequency.Daily))
   {
    for (int day = 0; day < remainedDays; day++)
     {

       bills[index].DateOfService = DateTime.Now.Date.AddDays(day).Date;
        remainedBills.Add(bills[index]);
     }
   }

こんにちは私もこれをしましたが役に立たない...

if (bills[index].FrequencyId == Convert.ToInt32(Frequency.Daily))
                    {
                        AdmissionEntryVo objAdmissionEntryVo = null;
                        for (int day = 0; day < remainedDays; day++)
                        {
                            objAdmissionEntryVo = new AdmissionEntryVo();
                            objAdmissionEntryVo = bills[index];
                            objAdmissionEntryVo.DateOfService = DateTime.Now.Date.AddDays(day).Date;
                            remainedBills.Add(objAdmissionEntryVo);
                        }
                    }
4

4 に答える 4

1

それらはすべて同じオブジェクトであり、複数のオブジェクトを追加することはありません。あなたが話していることを修正する唯一の方法は、追加するたびに新しいインスタンスを作成することです。

于 2012-12-12T05:36:32.343 に答える
1

DateOfServiceプロパティを変更して再度追加していますが、前に追加したアイテムDateOfServiceも変更しています

これは、リストにオブジェクト参照を追加していて、リスト内のオブジェクトが同じ参照を指しているためです。したがって、アイテムを変更すると、他のアイテムにも効果が見られます。オブジェクトの新しいインスタンスを作成してから、そのプロパティを変更してリストに追加する必要があります。

于 2012-12-12T05:37:12.047 に答える
0

「PreferenceandPrimitivedatatype」に関連しているようです。これらのオブジェクトはすべて同じオブジェクトであるため、同じオブジェクトをリストに追加し続けます。続行する前に、「優先データ型とプリミティブデータ型」を学習して区別することをお勧めします。;) 乾杯。

于 2012-12-12T05:44:41.350 に答える
0

こんにちは、私はすべてのプロパティを拡張メソッドを記述して別のリストアイテムにコピーし、追加しました...正常に動作しています...

これが拡張方法です

public static void CopyPropertiesTo<T>(this T source, T dest)
        {
            var plist = from prop in typeof(T).GetProperties() where prop.CanRead && prop.CanWrite select prop;

            foreach (PropertyInfo prop in plist)
            {
                prop.SetValue(dest, prop.GetValue(source, null), null);
            }
        }
于 2012-12-12T07:06:08.497 に答える