根据General Naming Conventions CLR类型名称(例如String
,Int16
)的使用应优先于使用特定于语言的类型名称(string
,{ {1}})。我通常会遵循这个建议。然而,Resharper似乎在生成代码时使用特定于语言的类型名称(重构方法,如提取方法,生成foreach循环等),这非常烦人。
如何强制Resharper改为使用CLR类型名称?
更新
很多人都在想为什么有人会强制使用short
代替Int32
或int
而不是String
的样式,目的是更好的语法高亮:int呈现为关键字,Int32呈现为一种类型。由于修改突出显示实现似乎有点过分,因此强制执行CLR类型只会完成工作。这是我们的风格指南的一部分原因之一。
答案 0 :(得分:15)
打开R#选项,转到C#代码样式。或者更详细:
RESHARPER
- > Options
Code Editing
- > C#
- > Code Style
Build-in type naming
- > When referencing build-in type, prefer using
选择CLR type name
This feature requires R#9.1 or higher
如果您使用较旧版本的ReSharper
R#4.5-5.1有一个扩展,正是考虑到了这个目的。它被称为Neovolve。不幸的是,这个扩展没有移植到任何后来的R#版本。
VS 2015
同样对于Visual Studio 2015,您可能希望禁用Tools
- > Options
{{1}下的内在预定义类型(这会导致符号在文本编辑器中显示为灰色) }} - > Text Editor
- > C#
- > Code Style
答案 1 :(得分:8)
这些指南指的是api上的公共方法名称,例如obj.ReadInt32()
(可能在序列化程序中)。在代码(变量和参数)的主体中,它没有明确指定。我个人更喜欢别名double
,int
等 - 如:
Int32
(愚蠢,但可能; where-as int
总是意味着global::System.Int32
)using System;
,就个人而言,我不担心这个。 R#没有做任何错误的。
另外请注意,有一些MS错误的例子 - IDataReader
/ DbDataReader
与GetFloat()
有关的问题(应该是GetSingle()
})。
答案 2 :(得分:4)
目前没有ReSharper选项可以优先System.Int16
而不是short
,类似。您可以投票选出open feature request on YouTrack;但请注意,它已经开放超过五年没有实施,你可以选择作为暗示。
答案 3 :(得分:2)
我知道这个问题已经得到解答,但是对于那些对将来首选样式感到好奇的人,.NET团队现在正式建议使用语言名称而不是CLR名称,这是.NET所使用的样式核心开发。
对于类型引用和方法调用(例如,
int, string, float
而不是{{1}),我们使用语言关键字而不是BCL类型(例如,Int32, String, Single
而不是int.Parse
等) }。
https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md