Я занимаюсь разработкой ASP.NET в VS и только что нашел интересное небольшое предложение кода (я думаю, что они происходят из coderush, но я могу ошибаться).
Всякий раз, когда я создаю элементы управления, он говорит мне, что я должен использовать для них инструкцию "using". Я немного смущен, что происходит здесь. с использованием моего кода выглядит примерно так:
using (HtmlTableRow tableRow = new HtmlTableRow())
{
tableRow.Attributes.Add("class", isOddRow ? "OddRow" : "EvenRow");
listingTable.Rows.Add(tableRow);
addCell(tableRow, row, "issueId");
addCell(tableRow, row, "Title");
addCell(tableRow, row, "Type");
addCell(tableRow, row, "Summary");
}
Поэтому я ожидаю, что в конце используемого оператора он будет вызываться dispose на tableRow. Однако в документах в библиотеке MSDN говорится:
Метод Dispose оставляет элемент управления в непригодном состоянии. После звонка этот метод, вы должны освободить все ссылки на контроль, поэтому память, которую она занимала, может быть восстановленный сборкой мусора.
Поэтому я ожидал бы, что теперь у меня есть непригодный для использования объект в моей структуре управления, чтобы он сломал или не сделал рендер или что-то в этом роде. Тем не менее, все работает нормально.
Так что мне интересно, почему все средства управления одноразовые? Это просто потому, что некоторые из них будут и делают их все одноразовыми, означает, что один вызов распоряжаться на верхнем уровне затем может быть передан всем рекурсивно дочерним элементам?
Я думаю, что я бы понял, если бы не тот факт, что документы прямо говорят, что утилизация элемента управления делает его непригодным... Являются ли документы неправильными?