Да, реальная ссылка сохраняется, так что в конце может быть вызван метод Dispose
. Этот шаблон часто используется для выполнения своего рода «побочного эффекта» при утилизации, когда вам явно не требуется доступ к одноразовому объекту внутри блока using
. Например, в Razor using(Html.BeginForm){...}
разрешает утилизацию возвращенного объекта для вывода тега </form>
в конце.
Тривиальным примером в C # будет:
public class MessageGenerator : IDisposable
{
public MessageGenerator()
{
Console.WriteLine("To whom it may concern,");
}
public void Dispose()
{
Console.WriteLine("Thanks and goodbye.");
}
}
И использование как это:
using (new MessageGenerator())
{
Console.WriteLine("Please give me lots of reputation.");
}
выдаст вывод примерно так:
К кому это может относиться,
Пожалуйста, дайте мне много репутации
Спасибо и до свидания.