У меня проблема при использовании статической переменной в моем проекте (силу с использованием статической переменной)Использование статической переменной в C#
public static List<int> a = new List<int>();
public static List<List<int>> list = new List<List<int>>();
public Form1()
{
for (int i = 0; i < 5;i++)
a.Add(i);
list.Add(a);
Console.WriteLine(list[0].Count); // **count = 5**
a.RemoveAt(0);
list.Add(a);
Console.WriteLine(list[0].Count); // **count = 4**
Console.WriteLine(list[1].Count); // count = 4
}
Когда я использую a.RemoveAt(0)
, это делает list[0]
изменения. Почему он это делает и как я могу это исправить?
потому что 'list [0]' содержит 'a', поэтому если вы удалите sth из' a' 'list [0] .Count' отличается. Это не из-за статики, потому что 'list [0]' содержит ссылку на объект 'a' – wudzik
Ну да, вы имеете в виду один и тот же объект. Если вы хотите сохранить _copy_ 'a' в' list [0] ', тогда сделайте копию:' list.Add (a.ToList()); '(обязательно добавьте директиву' using System.Linq; ') –
, что вы пытаетесь архивировать с помощью этого кода? –