在与同事讨论了在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开发,所以我真的很想了解正在发生的事情以及它是否有益.
可能重复:
ReSharper和var
在我安装了ReSharper后,它要求(通过警告)我尽可能使用var,例如
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
ReSharper想把它变成
var ue = (UnhandledExceptionEventArgs) t;
Run Code Online (Sandbox Code Playgroud)
我更喜欢第一个版本,有没有理由更喜欢var?更好的性能?什么?或者它只是一种代码风格?
给定一个列表,首选哪个方法来确定里面的元素数量?
var myList = new List<string>();
myList.Count
myList.Count()
Run Code Online (Sandbox Code Playgroud) 可能重复:
在C#中使用var关键字
我在Visual Studio中使用resharper.每当我创建类实例resharper建议我使用var而不是确切类型的类.为什么使用var运算符更合适?
我有下面的linq当前工作,但我真正想要的是返回一个ICollection<SexyPeopleVM>而不是列表.但我无法理解语法和其他替代方案,我试过在运行时失败了.
这可能吗?我怎样才能做到这一点?
var o = from s in sexyPeople
select new SexyPeopleVM()
{
id = s.ID,
title = s.Title,
views = s.Views,
url = s.GetFullyQualifiedURL(),
friendlyDate = s.DateCreated.AsShortFriendly()
};
List<SexyPeopleVM> list = o.ToList();
return list;
Run Code Online (Sandbox Code Playgroud)