c# - 在什么假设下 Re-Sharper 会向我显示 "Use implicitly typed local variable"消息?

标签 c# .net resharper dynamic-languages static-language

在我的理解中,C# 最初是一种静态语言,在 .NET 框架中进行了一些增强,然后开始支持该语言的动态特性。

我认为 c# 中的“var”关键字在运行时加载 DLL 时非常强大,而且我们不知道我们会遇到哪些类型,这非常有帮助。

但我认为,如果变量在设计时已声明为 var,则会带来确定变量类型的开销。现在,re-sharper 负责通过提出一些不错的建议使我们的代码更漂亮、更清晰,它向我提出了如下建议:

我的代码是这样的:

StatusResult result = new StatusResult();

Resharper提示要转成

 var result = new StatusResult();

这是为什么呢?当我认为这不是一个好主意时,我为什么要购买 resharper 的建议?还是我错了?

最佳答案

这主要是一个基于意见的问题,但有一个问题值得解决: 区分类型推断和动态类型非常重要。

dynamic i = 0; 中,i 被声明为动态变量,其类型仅在运行时解析。这可能会导致开销。

var i = 0; 中,i 被声明为一个 intvar 关键字仅表示变量类型将由编译器在编译时推断。没有“设计时”类型推断开销,因为 var i = 1;int i = 1 编译为同一组指令。它与动态类型无关。

关于c# - 在什么假设下 Re-Sharper 会向我显示 "Use implicitly typed local variable"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701616/

相关文章:

c# - 使用 openid 与 ServiceStack 的 WPF 使用者

c# - UWP 访问安装位置被拒绝

c# - 在字符串 [] 中返回用户所属的所有 Active Directory 组的列表

c# - 无法在 nunit 测试中打开 sqlconnection

php - 用于 NetBeans 的类似 ReSharper 的插件

c# - 使用 ReSharper 将 Linq 转换为代码

c# - 我怎样才能避免这种潜在的 "run-time exception on write operation"?

c# - 如何在DNN自定义模块开发包中添加数据库脚本?

.net - 创建动态包含子查询的 Linq 表达式

c# - 在匿名类型中包含基于条件的属性