在与同事讨论了在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) 这是一个问题,在编程时我总是想知道:在编写代码时要使用什么:
var myFiles = Directory.GetFiles(fullPath);
Run Code Online (Sandbox Code Playgroud)
要么
string[] myFiles = Directory.GetFiles(fullPath);
Run Code Online (Sandbox Code Playgroud)
VAR是新的,是一个隐式类型的局部变量,所以我们只能在本地使用,它具有类似的规则不能为空,等等,但我不知道如果我们使用它"正常"的任何优势.
"常"的部分说,不是在匿名类型,对象和集合初始化和查询表达式,其中这是使用var匿名对象的意图,所以我的意思是......就像上面的例子.
你的想法是什么?
该变种关键字摒弃了需要一个明确的类型声明,我有兴趣地阅读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或对象名称类型?
在C#中使用var关键字var关键字
的重点是什么?
我是否应该总是喜欢在C#3.0中隐含类型的局部变量?
我刚刚安装了ReSharper的试用版,以便为我的公司进行评估.我注意到的一件事是建议我更改以下内容(编写示例):
string s = "";
Run Code Online (Sandbox Code Playgroud)
至
var s = "";
Run Code Online (Sandbox Code Playgroud)
在声明变量时,最好使用var关键字而不是使用Object Type吗?它给了什么优点.对于上下文,我是一名刚刚过渡到.Net工作的Java开发人员.