我有一个有趣的问题。我有一类人:添加到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