你能解释使用声明的匿名类型吗?你能解释两种用法的利弊吗?
using(var myCtx = new Entity() )
{
}
Run Code Online (Sandbox Code Playgroud)
另一个:
using(Entity myCtx = new Entity() )
{
}
Run Code Online (Sandbox Code Playgroud)
他们之间有什么区别?
这是一个隐式类型变量,而不是匿名类型.(匿名类型是使用表达式获得的类型new { X = 10, Y = "hello" }.
你的两个代码片段完全等效 - 编译器只是推断myCtx它的类型:它仍然是静态类型的; 物品仍将被处置等
这里的using语句没有特定的内容- 您可以对任何局部变量使用隐式类型,只要您想要的类型与初始化表达式的编译时类型相同即可.(如果值是null或者是匿名函数,那么你需要强制转换值,在这一点上使用它是合理的毫无意义的var.)
Blatant plug:你可以在我的书第8章深度C#中找到隐式类型和匿名类型的更多细节.幸运的是,这是免费章节之一,您可以从本书的Manning页面下载.