我有一個有趣的問題。我有一類人:添加到Observable Collection時的奇怪行爲
public class Person
{
public string Name { get; set; }
public int? Score { get; set; }
public int NbrOfWins { get; set; }
public int NbrOfLosses { get; set; }
public int HighScore { get; set; }
}
我創建一個觀察的集合:
ObservableCollection<Person> test = new ObservableCollection<Person>();
我有一個擴展方法添加到觀察集合:
public static void myFillTest<T>(this ObservableCollection<T> value1, T value2, int nbr)
{
for (int x = 0; x < nbr; x++)
{
value1.Add(value2);
}
}
我加5項像這樣的集合:
test.myFillTest(new Person { Name = "None" }, 5);
如果我更改了一個實例名稱:
test[2].Name = "John";
所有在收集變化的項目,因爲如果他們都指向同一件事。 這將是什麼原因?順便說一下,這適用於類型爲int的字符串和字符串,但不適用於typeof類。
要添加相同的參考(值2)。添加值類型時,它可以工作,因爲它們不是引用。 –
正如使用nbr作爲參數名稱一樣令人困惑。你應該寫你的變量名,這樣如果你閱讀你的代碼(或其他人),他們將很容易知道是什麼。更好的辦法是使用「int numberofcopies」,然後你的代碼立即更具可讀性。 value1和value2也不是很具描述性。 – TylerD87