在我的理解中,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
被声明为一个 int。 var
关键字仅表示变量类型将由编译器在编译时推断。没有“设计时”类型推断开销,因为 var i = 1;
和 int i = 1
编译为同一组指令。它与动态类型无关。
关于c# - 在什么假设下 Re-Sharper 会向我显示 "Use implicitly typed local variable"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22701616/