关于var的讨论。
网上说的有这几点好处:
1. 它有利于更好地为本地变量命名。
2. 它有利于设计更好的API。
3. 它促使对变量进行初始化。
4. 它消除了代码的混乱。
5. 它不需要using指示符。
网上对这几点好处观点不一致,有的认为是荒谬的。
请问各位在编程的时候有没有经常用到var这个没?通常在什么时候用到的?最后一个好处说不需要using指示符是什么意思?
------解决方案--------------------反正我在java的时候么有var很不习惯~
var无可替代的地方是匿名类型
至于什么变量初始化 更好的本地变量命名 更好的API 那都是扯淡 一点关系都没有 var什么时候可以声明本地变量了 他就只能在方法内声明局部变量
------解决方案--------------------C#的var不同于Javascript的var。
它的出现的一个最强烈的动机是配合C# 3.0出现的匿名类。所谓匿名类,其实是C#编译器命名的类,而程序员则不管它的名字。因为它根本没有名字,所以如果没有var,那么就用不起来了。
var实现了编译器对变量名的自动推定,看这样一个类型:
IEnumerable<Dictionary<string, Func<int, int, bool>>>,写起来是多么繁琐。
有了var,就可以让代码更清洁了。
------解决方案--------------------例如我在编写代码时,因为有很多被使用的方法我懒得查资料,因此很多时候我都不知道赋值语句右边计算结果的具体类型该怎样写,我都是先声明了变量,然后在下一行去看看vs提示给我这个变量的类型是什么,我才知道接下来该怎么写代码。
我经常“钦佩”有人会写出
C# code
IList<xxx> lst= Getdatas(..);
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
int i = 5;
??? m = i > 0 ? 0D : 2L; //这时M的类型在设计时是没法推断出的。所以没有办法处理。
可以用dynamic 但是除非必要,本人不推荐用这个,编译时检查是高级语言一个很好的优点,这个还是尽量保持的好。
dynamic m = i > 0 ? 0D : 2L;