在与同事讨论了在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) 我刚刚开始在Visual Studio中使用ReSharper(在关于SO的许多建议之后).为了试一试,我打开了一个最近的ASP.NET MVC项目.我注意到它提出的第一个也是最常见的事情之一是将大多数/所有我的显式声明var改为.例如:
//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
Run Code Online (Sandbox Code Playgroud)
等,即使采用简单的类型,如int,bool等
为什么要推荐这个?我不是来自计算机科学或.NET背景,最近"陷入".NET开发,所以我真的很想了解正在发生的事情以及它是否有益.
可能重复:
在方法之外使用var
class A {
string X;
}
// Proper
class A {
var X;
}
// Improper (gives error)
Run Code Online (Sandbox Code Playgroud)
为什么,我不能在类中使用var类型变量声明,为了实现它可以做些什么或者什么是替代?
在函数/方法中,我可以声明一个var类型变量,那么为什么不能,我在课堂上这样做?
谢谢.
我已经在stackoverflow中检查了5个或更多关于var使用的帖子,但我仍然在寻找关于var用法的答案.我习惯使用Concrete类型而不是var,但我的Resharper抱怨改为var.var是类型的选择 - 即使已知具体类型?
我想知道你var什么时候应该使用?
C#中的几乎任何东西,除了可能是原语和一些更奇怪的情况,都来自Object.
那么使用那些实际类型不是更好的做法吗?或者至少object?
(我已经编程了一段时间,我的严格观点是那var是邪恶的)