例如我有以下類:意外行爲
class Person
{
public List<int> Grades{ get; set; }
public Person(List<int> grades)
{
this.Grades = grades;
}
}
而且比我使用這個類的主要方法,是這樣的:
static void Main(string[] args)
{
List<int> grades = new List<int> { 1, 2, 3, 4, 5 };
Person person = new Person(grades);
for (int i = 0; i < 5; i++)
{
if (i % 2 == 0)
{
grades[i] = 0;
}
else
{
grades[i] = -1;
}
}
foreach(var grade in person.Grades)
{
Console.Write(grade + " ");
}
Console.ReadKey();
}
運行之後代碼我預計在控制檯上:輸出結果。 Insteead我有這個輸出結果: 0 -1 0 -1 0
我希望集合「保存」到個人實例,以保持它的初始化。我應該怎麼做才能保持這個集合不被修改爲Person實例,這樣即使我修改了main方法中的等級集合,我也會得到「1 2 3 4 5」輸出結果。
有人可以請解釋我,爲什麼會發生這種情況?
您存儲_reference_到列表中,而不是名單本身。 – 2015-04-01 19:05:05