WPF中的应用程序级变量

时间:2013-03-06 12:54:53

标签: c# wpf

我在一个窗口中有一个应用程序级别变量

  object temp1 = App.Current.Properties["listofstring"];

   var temp2 = (List<string>)temp1;
当我改变时,请说

 temp2[0]="abc";

它也会在“listofstring”

中改变它

所以我复制了一份

List<string> temp3 = temp2;

但如果我这样做

 temp3[0] ="abc"; 

在其他窗口中访问时,“listofstring”也会改变?

一旦宣布,我如何仅使用本地副本 不打扰其内容?

1 个答案:

答案 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();