这是一个问题,在编程时我总是想知道:在编写代码时要使用什么:
var myFiles = Directory.GetFiles(fullPath);
Run Code Online (Sandbox Code Playgroud)
要么
string[] myFiles = Directory.GetFiles(fullPath);
Run Code Online (Sandbox Code Playgroud)
VAR是新的,是一个隐式类型的局部变量,所以我们只能在本地使用,它具有类似的规则不能为空,等等,但我不知道如果我们使用它"正常"的任何优势.
"常"的部分说,不是在匿名类型,对象和集合初始化和查询表达式,其中这是使用var匿名对象的意图,所以我的意思是......就像上面的例子.
你的想法是什么?
前几天我和同事聊天,听说他们的编码标准明确禁止他们var在C#中使用关键字.他们不知道为什么会如此,我总是发现隐式声明在编码时非常有用.我从来没有遇到任何问题,找出变量是什么类型(你只是将鼠标悬停在VS中的变量上,你会得到那种方式).
有谁知道为什么在C#中使用var关键字是个坏主意?
当我说
public static IMyType GetGateWayManager()
{
IUnityContainer _container = GetContainer();
IMyType _gateWayManager = _container.Resolve<IMyType>();
return _gateWayManager;
}
Run Code Online (Sandbox Code Playgroud)
它带有警告说Use implicitly types local variable.
如果我改成它
public static IMyType GetGateWayManager()
{
IUnityContainer _container = GetContainer();
var _gateWayManager = _container.Resolve<IMyType>();
return _gateWayManager;
}
Run Code Online (Sandbox Code Playgroud)
没事.
任何人都可以告诉我为什么VS编辑认为最好在这里使用var?
在C# Coding Conventions 中,当变量的类型从赋值的右侧很明显时,为什么 Microsoft 建议使用隐式类型?
我知道没有必要声明它,因为它很明显,但为什么要提出建议?显式键入不是使代码更易于遵循吗?
var str1 = "This is clearly a string.";
Run Code Online (Sandbox Code Playgroud)
对比
string str2 = "This is clearly a string.";
Run Code Online (Sandbox Code Playgroud)
这有编译时间的好处吗?
可能重复:
在C#中使用var关键字
对于C#来说比较新,我想知道MS必须引入var隐式类型变量的动机.文件说:
隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型.
进一步说:
在许多情况下,var的使用是可选的,只是语法上的便利
这一切都很好,但在我看来,这只会引起混乱.
假设你正在审查这个for循环.
foreach (var item in custQuery){
// A bench of code...
}
Run Code Online (Sandbox Code Playgroud)
而不是审查循环的内容和语义,我会花费宝贵的时间来寻找项目的类型!我宁愿选择以下内容:
foreach (String item in custQuery){
// A bench of code...
}
Run Code Online (Sandbox Code Playgroud)
问题是:我读到隐式类型变量在处理LINQ时有帮助,是否真的有助于在其他场景中使用它?