Важно отметить, что использование на самом деле скомпилировано в различные строки кода, похожие на блокировку и т. Д.
Из спецификации языка C # ....
Заявление об использовании формы
using (ResourceType resource = expression) statement
соответствует одному из двух возможных расширений. Когда ResourceType
является типом значения, расширение равно
{
ResourceType resource = expression;
try {
statement;
}
finally {
((IDisposable)resource).Dispose();
}
}
В противном случае, когда ResourceType является ссылочным типом, расширение составляет
{
ResourceType resource = expression;
try {
statement;
}
finally {
if (resource != null) ((IDisposable)resource).Dispose();
}
}
(фрагмент спецификации конечного языка)
По сути, во время компиляции он конвертируется в этот код. Не существует метода, называемого использованием и т. Д. Я пытался найти подобные вещи в спецификации языка vb.net, но ничего не смог найти, предположительно, он делает то же самое.