Это неявно типизированная переменная , а не анонимный тип. (Анонимный тип - это то, что вы получаете, используя выражение, такое как new { X = 10, Y = "hello" }
.
Ваши два фрагмента кода в точности эквивалентны - компилятор просто выводит тип myCtx
: он все еще статически типизирован; объект все еще будет утилизирован и т. д.
Здесь нет ничего конкретного для оператора using
- вы можете использовать неявную типизацию для любой локальной переменной, при условии, что требуемый тип совпадает с типом времени компиляции выражения инициализации. (Если значение null
или анонимная функция, вам нужно привести значение, и в этот момент разумно бессмысленно использовать var
, если честно.)
Откровенный плагин: более подробную информацию о неявной типизации и анонимных типов вы можете найти в главе 8 моей книги, C # in Depth. К счастью, это одна из бесплатных глав, которую вы можете скачать со страницы Manning для книги .