在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法?
例如,我在可疑情况下懒得使用var,例如: -
foreach(var item in someList) { // ... } // Type of 'item' not clear.
var something = someObject.SomeProperty; // Type of 'something' not clear.
var something = someMethod(); // Type of 'something' not clear.
Run Code Online (Sandbox Code Playgroud)
var的更合理用途如下: -
var l = new List<string>(); // Obvious what l will be.
var s = new SomeClass(); // Obvious what s will be.
Run Code Online (Sandbox Code Playgroud)
有趣的是LINQ似乎有点灰色,例如: -
var results = from r in dataContext.SomeTable
select r; // Not *entirely clear* what results will be …Run Code Online (Sandbox Code Playgroud) 该变种关键字摒弃了需要一个明确的类型声明,我有兴趣地阅读SO讨论时,它可能是适当的.
我还读过(但未使用过)Boo,它似乎通过使声明局部变量可选而更进一步.使用Boo,可以隐含类型和声明.
这让我想知道,为什么C#语言设计师根本不想包含一个var关键字?
更新:是的,var支持匿名类型,但匿名类型本身不需要var关键字...
var anon = new { Name = "Terry", Age = 34 };
Run Code Online (Sandbox Code Playgroud)
与
anon = new { Name = "Terry", Age = 34 };
Run Code Online (Sandbox Code Playgroud) 我总是看到其他人生成如下代码:
var smtp = new SmtpClient();
但为什么要使用var而不是SmtpClient在这种情况下呢?我总是用
SmtpClient smtp = new SmtpClient();
是var更有效?为什么要使用var而不是实际的变量类型?我错过了什么吗?