Как сделать 2 static list одинаковыми, но чтобы ссылались на разные данные в памяти?

Для того чтобы сделать два статических списка одинаковыми, но ссылающимися на разные данные в памяти, вам нужно создать копию списка, а не просто присваивать ссылку на него.

В C# можно создать копию списка с помощью метода "ToList()" класса List. Рассмотрим пример:

static List<int> list1 = new List<int>() { 1, 2, 3 };
static List<int> list2 = list1.ToList();

В данном примере, мы создаем статический список "list1" и инициализируем его некоторыми значениями. Затем, мы создаем статический список "list2" и присваиваем ему копию "list1" с помощью метода "ToList()".

Теперь оба списка "list1" и "list2" содержат одинаковые значения, но ссылки на разные данные в памяти. Если вы добавите, удалите или измените элементы в одном из списков, это не повлияет на другой список.

list1.Add(4);
Console.WriteLine(string.Join(", ", list1)); // Вывод: 1, 2, 3, 4
Console.WriteLine(string.Join(", ", list2)); // Вывод: 1, 2, 3

list2.Remove(2);
Console.WriteLine(string.Join(", ", list1)); // Вывод: 1, 2, 3, 4
Console.WriteLine(string.Join(", ", list2)); // Вывод: 1, 3

Как видно из примера, изменения в одном списке не влияют на другой список.