И frm5.entries
, и entries
относятся к одному и тому же объекту, так как ранее этот код:
frm5.entries = entries;
Значение каждой переменной здесь - это просто ссылка наобъект - как две бумажки с одинаковым домашним адресом.Ваш звонок по номеру entries.Clear()
все равно что сказать: «Идите в дом с адресом, написанным на листке бумаги под названием entries
, и уберите всю мебель».Если вы затем пойдете в дом с адресом, написанным на листе бумаги под названием frm5.entries
, вы увидите пустой дом.
Так работают ссылочные типы в .NET, и это важно понять это, чтобы добиться прогресса на любом языке .NET.У меня есть страница по теме с гораздо более подробной информацией, и есть вопрос переполнения стека , который вы также можете найти полезным.
Вот пример, демонстрирующий эту мысль:
using System;
using System.Collections.Generic;
class Test
{
static void Main()
{
List<string> x = new List<string>();
List<string> y = x;
// x and y now refer to the same list...
x.Add("foo");
Console.WriteLine(y.Count); // 1
y.Clear();
Console.WriteLine(x.Count); // 0
// Changing x or y to refer to a different list
// *doesn't* change the other variable
x = new List<string>();
x.Add("bar");
x.Add("baz");
Console.WriteLine(y.Count); // 0
}
}