首页 新闻 会员 周边

C#3.0中var隐式变量相对于强类型的哪个更好?求大神赐教

0
悬赏园豆:20 [已解决问题] 解决于 2014-05-13 16:02

  最近用Resharper改项目,发现resharper都是建议将强类型变量改为用var隐式接受,不知道用var有什么好处,百度了一下,说是var是内联的,读写速度比强类型的快很多,这样的话当然很好,但是也有人说用var不利于维护,不容易看出变量的类型,但是感觉用var很容易辨别类型啊

  具体的用var是好还是话,求博客园大神赐教

传说中的十三月的主页 传说中的十三月 | 初学一级 | 园豆:102
提问于:2014-05-12 15:36
< >
分享
最佳答案
0

var 在编译时就已经确定类型了,只是一个语法糖,例如有类:SingleEntityRepositoryGeneric

名称很长,甚至更长。

如果要实例化

SingleEntityRepositoryGeneric 变量名=new SingleEntityRepositoryGeneric();

var 变量名=new SingleEntityRepositoryGeneric();

相比的话其实是便于阅读的。

这个时候你将鼠标移到var 上 会提示SingleEntityRepositoryGeneric;

编译时会将var 替换为SingleEntityRepositoryGeneric;

上面 说var在反射上面效率是最高的 ,其实是错误的,因为var根本不用反射。

收获园豆:20
喵喵喵猫 | 小虾三级 |园豆:1742 | 2014-05-12 17:56

var 在使用时必须先确定类型    但是就是不知道它的效率如何,至于在代码阅读上是有提示   用resharper的时候 都是提示用 var 声明变量或接受对象   所以很想知道为什么推荐用var

传说中的十三月 | 园豆:102 (初学一级) | 2014-05-12 18:00

@一盏明灯: 因为它是在编译时就要转换为实际类型,所以在使用时要先确定类型。

而dynamic 则是运行时确定类型。所以使用时不用确定类型。

resharper很好用,但是在提示使用linq expresstion时要慎重,有可能使用建议后运行结果不是预期。

如果没有其他问题就结贴吧。

喵喵喵猫 | 园豆:1742 (小虾三级) | 2014-05-12 21:39

@芬达:   这个我知到var是在运行时确定   我是想问   是用强类型的 还是隐式的var  哪个效率更好

传说中的十三月 | 园豆:102 (初学一级) | 2014-05-12 21:44

@一盏明灯: 

我勒个去。。。。

1、var是在编译时确定。

2、既然是编译时确定就和强类型是一样的。

喵喵喵猫 | 园豆:1742 (小虾三级) | 2014-05-12 21:45
其他回答(3)
0

用var好呗,至于不利于维护就要看你怎么给变量命名了,只要命名的时候突出一下类型不就方便维护了么。

刘宏玺 | 园豆:14020 (专家六级) | 2014-05-12 16:28

就是不知道var是不是真的读写速度快,没有试过,至于命名一般都是比较规范的,所以得请教博客园里的大神

支持(0) 反对(0) 传说中的十三月 | 园豆:102 (初学一级) | 2014-05-12 16:31

@一盏明灯: var在反射上面效率是最高的

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-05-12 16:32
0

看情况来处理 有时候你遍历一个对象比如 datatable中的行 用var 时会取不到row中的很多属性 因为对象不明确

但在new一个对象时是适合用var 的 可以从new后知道var 的类型,已及代码会更精简一点  

Zery | 园豆:6151 (大侠五级) | 2014-05-12 22:38
0

1、var是语法糖,和直接写明类型效率是一致的;

2、使用var看个人喜好和公司的编码规范;

3、var能够方便的申明匿名类型,这个其他写法可不好搞;

幻天芒 | 园豆:37175 (高人七级) | 2014-05-13 12:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册