我在一个窗口中有一个应用程序级别变量
object temp1 = App.Current.Properties["listofstring"];
var temp2 = (List<string>)temp1;
当我改变时,请说
temp2[0]="abc";
它也会在“listofstring”
中改变它所以我复制了一份
List<string> temp3 = temp2;
但如果我这样做
temp3[0] ="abc";
在其他窗口中访问时,“listofstring”也会改变?
一旦宣布,我如何仅使用本地副本 不打扰其内容?
答案 0 :(得分:5)
您没有复制列表,而是复制参考。你可以这样做:
List<string> temp3 = new List<string>(temp2.ToArray());
//or
List<string> temp3 = new List<string>(temp2);
或者
List<string> temp3 = temp2.Select(r=>r).ToList();
//or
List<string> temp3 = temp2.ToList();