var 在编译时就已经确定类型了,只是一个语法糖,例如有类:SingleEntityRepositoryGeneric
名称很长,甚至更长。
如果要实例化
SingleEntityRepositoryGeneric 变量名=new SingleEntityRepositoryGeneric();
var 变量名=new SingleEntityRepositoryGeneric();
相比的话其实是便于阅读的。
这个时候你将鼠标移到var 上 会提示SingleEntityRepositoryGeneric;
编译时会将var 替换为SingleEntityRepositoryGeneric;
上面 说var在反射上面效率是最高的 ,其实是错误的,因为var根本不用反射。
var 在使用时必须先确定类型 但是就是不知道它的效率如何,至于在代码阅读上是有提示 用resharper的时候 都是提示用 var 声明变量或接受对象 所以很想知道为什么推荐用var
@一盏明灯: 因为它是在编译时就要转换为实际类型,所以在使用时要先确定类型。
而dynamic 则是运行时确定类型。所以使用时不用确定类型。
resharper很好用,但是在提示使用linq expresstion时要慎重,有可能使用建议后运行结果不是预期。
如果没有其他问题就结贴吧。
@芬达: 这个我知到var是在运行时确定 我是想问 是用强类型的 还是隐式的var 哪个效率更好
@一盏明灯:
我勒个去。。。。
1、var是在编译时确定。
2、既然是编译时确定就和强类型是一样的。
用var好呗,至于不利于维护就要看你怎么给变量命名了,只要命名的时候突出一下类型不就方便维护了么。
就是不知道var是不是真的读写速度快,没有试过,至于命名一般都是比较规范的,所以得请教博客园里的大神
@一盏明灯: var在反射上面效率是最高的
看情况来处理 有时候你遍历一个对象比如 datatable中的行 用var 时会取不到row中的很多属性 因为对象不明确
但在new一个对象时是适合用var 的 可以从new后知道var 的类型,已及代码会更精简一点
1、var是语法糖,和直接写明类型效率是一致的;
2、使用var看个人喜好和公司的编码规范;
3、var能够方便的申明匿名类型,这个其他写法可不好搞;