网上说的有这几点好处:
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# codeIList<xxx> lst= Getdatas(..);
这类代码来的人,我想“他可真有一种对理论的着迷啊”。反正我从来不使用IList<T>,我大概只会随手写出
C# codevar lst= Getdatas(..);
这类代码,干么要去纠结这里是否需要抽象呢?该多态的地方自然会去适配lst的子类型,但是不是在这里为lst声明什么IList<T>类型。
编程不是什么高尚的事情,编程的目的就是让测试可以通过。设计测试用例才是高级的工作,而编程不是。所以不要把时间全都消耗在编程理论上,至少要拿出70%的时间去研究那些可以驱动出更加敏捷、更加方便、更可以应对系统不断重构的编程方法。