你能解释使用声明的匿名类型吗?

lok*_*oki 0 .net c# c#-4.0

你能解释使用声明的匿名类型吗?你能解释两种用法的利弊吗?

using(var myCtx = new Entity() )
{

}
Run Code Online (Sandbox Code Playgroud)

另一个:

using(Entity myCtx = new Entity() )
{

}
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

Jon*_*eet 5

这是一个隐式类型变量,而不是匿名类型.(匿名类型是使用表达式获得的类型new { X = 10, Y = "hello" }.

你的两个代码片段完全等效 - 编译器只是推断myCtx它的类型:它仍然是静态类型的; 物品仍将被处置等

这里的using语句没有特定的内容- 您可以对任何局部变量使用隐式类型,只要您想要的类型与初始化表达式的编译时类型相同即可.(如果值是null或者是匿名函数,那么你需要强制转换值,在这一点上使用它是合理的毫无意义的var.)

Blatant plug:你可以在我的书第8章深度C#中找到隐式类型和匿名类型的更多细节.幸运的是,这是免费章节之一,您可以从本书的Manning页面下载.