首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我应该使用var而不是一个类型?

为什么我应该使用var而不是一个类型?
EN

Stack Overflow用户
提问于 2011-02-02 06:04:13
回答 4查看 137.5K关注 0票数 170

可能重复:

ReSharper and var

在我安装了ReSharper之后,它(通过警告)要求我尽可能使用var,例如

代码语言:javascript
复制
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;

ReSharper想把它变成

代码语言:javascript
复制
var ue = (UnhandledExceptionEventArgs) t;

我更喜欢第一个版本,有什么理由更喜欢var吗?更好的性能?什么都行?或者这只是一种代码风格?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-02 06:06:19

它实际上只是一种编码风格。编译器为两个变体生成完全相同的结果。

有关性能问题,另请参阅此处:

票数 115
EN

Stack Overflow用户

发布于 2011-02-02 06:07:22

你说的“警告”到底是什么意思?我经常看到它给出一个提示,你可能想使用var,但没有什么比警告更刺耳的了。

使用var没有性能差异-代码被编译成相同的IL。潜在的好处在于可读性-如果你已经在赋值的RHS上明确了变量的类型(例如,通过强制转换或构造函数调用),那么在LHS上也有它的好处在哪里?不过,这是个人喜好。

如果您不希望R#建议使用var,只需更改选项即可。关于ReSharper的一件事:它是非常可配置的:)

票数 37
EN

Stack Overflow用户

发布于 2011-02-02 06:15:57

正如其他人所说,当您使用以下任一选项时,编译后的代码(IL)没有区别:

代码语言:javascript
复制
var x1 = new object();
object x2 = new object;

我想Resharper之所以警告你,是因为在我看来,读第一个例子比读第二个例子更容易。此外,有什么必要重复两次类型的名称呢?

考虑以下几点,你就会明白我的意思:

代码语言:javascript
复制
KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));

取而代之的是它更容易阅读:

代码语言:javascript
复制
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4868477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档