【发布时间】:2014-10-14 17:40:53
【问题描述】:
Resharper 的代码检查建议在 C# 中使用 var 而不是显式类型。 我不喜欢这个选项,因为太多的 var 会让事情变得不清楚,所以我禁用了这个选项。 但是,我喜欢使用 var 的地方是在初始化时使用相同类型的两倍符合泛型(因此在与 java 7 中的菱形运算符类似的情况下),例如:
Dictionary<string string> dic = new Dictionary<string, string>();
// I want a suggestion to replace this to
var dic = new Dictionary<string, string>();
// but I don't want to replace things like this:
Person p = new Person();
我在 Resharper 中制作了一个自定义模式:
Dictionary<$type1$, $type2$> $id$ = new Dictionary<$type1$, $type2$>();
替换为:
var $id$ = new Dictionary<$type1$, $type2$>();
这可以正常工作,但该模式还会找到已使用规则转换的行。为什么以及如何解决这个问题?
编辑:将部分文本加粗,因为似乎没有人阅读它。
【问题讨论】:
-
有趣。我认为这可能只是 Search with Pattern 功能的限制。
-
我认为他们自己的预制规则,如“尽可能使用 var 关键字”是用相同的语法制定的,所以我认为他们也必须解决这个问题。如果我能以他们的预制规则的来源为例。
-
我想创建一个规则,用“string x = string_expression”替换“var x = string_expression”,但这似乎不可能。 “var” 关键字已在某处硬编码 :( 他们绝对应该解决这个问题。
标签: c# visual-studio resharper var