Dr *_* TJ 1 c# variables .net-4.0 c#-4.0
声明变量哪个更好或更快?
var ds = new Class1();
Run Code Online (Sandbox Code Playgroud)
要么
Class1 ds = new Class1();
Run Code Online (Sandbox Code Playgroud)
我自己相信第二个应该是更快的coz编译器不需要查找类型Class1,但一些插件ReSharper总是通知我Class1改为var.
谁能解释我为什么?
他们编译到同一个IL,所以两者都不会更快.但是,可读性可能会有很大差异.
我倾向于明确声明变量的类型,但var如果以下任何一种情况适用,请使用:
与许多可读性问题一样,关于在哪里使用var- 从"无处"到"无处不在" ,存在广泛的意见.请注意,您可以在选项中更改ReSharper为您推荐的内容.(我似乎记得在默认情况下它"推荐"两种方式 - 所以真的只是让你更容易切换.)
几个答案提到了所涉及的击键次数.我认为这是最不利的理由var.如果有的话,我很少会在打字速度方面遇到瓶颈.我的编码速度在很大程度上取决于我对问题领域的理解,以及我能够清楚地想象解决方案.我宁愿输入2000次击键,但最终还是采用了优雅的设计,实际上用100个字符表示,而不是只用500个键击来设置不太可读的500字符.考虑一下阅读代码所花费的时间,而不是打字的机制.
他们都编译成同样的东西.使用时var,您只需让编译器在编译时推断出类型.这可能会增加一点编译时间(我实际上没有测试过那部分),但在运行时没有任何影响.
前者(我个人更喜欢)的优点是当你开始处理长类型名称时:
var conn = new System.Data.SqlConnection(connString);
Run Code Online (Sandbox Code Playgroud)
击键次数更少,阅读更容易:
System.Data.SqlConnection conn = new System.data.SqlConnection(connString);
Run Code Online (Sandbox Code Playgroud)
此外,没有var使用匿名类型几乎是不可能的:
var someObj = new { Name = "Test", Saying = "Hello World!" };
Run Code Online (Sandbox Code Playgroud)
有时我宁愿使用完整的类型名称而不是var.最值得注意的是处理方法的返回值时.如果从方法的名称不清楚返回值的类型是什么,我将明确定义它.如果发生任何变化,这可以减少混乱.
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |