C# 如何强制Resharper为自动生成的代码使用CLR类型名称?
根据规则,CLR类型名称的使用(例如C# 如何强制Resharper为自动生成的代码使用CLR类型名称?,c#,.net,vb.net,naming-conventions,resharper,C#,.net,Vb.net,Naming Conventions,Resharper,根据规则,CLR类型名称的使用(例如String,Int16)应优先于特定语言类型名称的使用(String,short)。我通常遵循这个建议。然而,Resharper似乎在生成代码时使用了特定于语言的类型名(如extract方法、生成foreach循环等重构),这非常烦人 如何强制Resharper改用CLR类型名称 更新 许多人想知道为什么有人会强制使用Int32而不是int或String而不是String的样式,其目的是更好地语法突出显示:int作为关键字呈现,Int32作为类型呈现。由于修
String
,Int16
)应优先于特定语言类型名称的使用(String
,short
)。我通常遵循这个建议。然而,Resharper似乎在生成代码时使用了特定于语言的类型名(如extract方法、生成foreach循环等重构),这非常烦人
如何强制Resharper改用CLR类型名称
更新
许多人想知道为什么有人会强制使用
Int32
而不是int
或String
而不是String
的样式,其目的是更好地语法突出显示:int作为关键字呈现,Int32作为类型呈现。由于修改突出显示实现似乎有些过分,强制执行CLR类型就可以完成这项工作。这就是为什么这是我们的样式指南的一部分的原因。这些指南是指api上的公共方法名称,例如obj.ReadInt32()
(可能在序列化程序中)。在代码体(变量和参数)中,它的指定较少。就我个人而言,我更喜欢别名double
,int
等-例如:
- 更好的突出显示
- 少打字
- 避免非关键字使用问题,即如果我有另一个名为
的方法/类型/属性/etc(愚蠢,但可能;其中asInt32
始终表示int
)global::System.Int32
- 即使您没有
使用系统也可以工作代码>
顺便说一句——请注意,有几个MS出错的例子——我突然想到的是
IDataReader
/DbDataReader
和GetFloat()
(应该是GetSingle()
)。目前没有比System.Int16
更喜欢的重新精简选项。有一个你可以投票支持的方案;但请注意,它已经开放了五年多,没有实现,您可以选择将其作为一个提示。openr#Options,转到C#Code Style。或者更详细地说:
RESHARPER
->选项
代码编辑
->C
->代码风格
内置类型命名
->引用内置类型时,首选使用
选择CLR类型名称
如果您绑定到旧版本的ReSharper
R#4.5-5.1的扩展正是出于这一目的。它叫。不幸的是,这个扩展没有移植到任何更高的R#版本
VS 2015
此外,对于Visual Studio 2015,您可能希望禁用以首选内部预定义类型(这会导致符号在文本编辑器中变灰)在
工具
->选项
文本编辑器
->C#
->代码样式
->首选内部预定义类型关键字*
我知道这个问题已经得到了回答,但对于那些想知道未来首选样式的人来说,NET团队现在正式建议使用语言名称而不是CLR名称,这是用于.NET核心开发的样式
对于类型引用和方法调用(例如,int.Parse
而不是Int32.string,Single
等),我们使用语言关键字来代替BCL类型(例如,int.Parse
而不是Int32.Parse
)
该链接指出CLR类型名称应用于类型名称(例如方法名称)。它没有提到任何关于直接使用这些for循环变量的内容,StyleCop建议使用其他方式,并改为使用。@flipchart我不是说循环变量的名称。考虑一个<代码> In16[]数;<代码>。现在我键入
fore
,点击crtl空格enter,Resharper生成类似foreach(数值中的变量编号)的内容{
对于number
的类型,我必须在var
和short
之间进行选择。在大多数情况下var
完全可以,但有时我喜欢使用具体的类型。我无法将short
覆盖到Int16
,而不会弄乱自动生成模式。我可以接受这一点,但额外的是ct方法、生成属性等应该可以工作。如果R#使用CLR类型,那就没有问题了。您的问题是关于var
vsshort
,还是short
vsInt16
?@AakashM我的问题是关于在特定于语言的类型名称(通常也是该语言中的关键字)上使用CLR类型.回答你的问题:short
vsInt16
。正如我已经说过的,找到(自动生成的)是非常烦人的提取的方法和生成的属性不符合实际的样式指南。不使用系统是一个要点。更好的突出显示?使用CLR类型的一个原因实际上是突出显示:所有类型都具有相同的颜色、用户定义的类型以及语言类型,以避免将它们与其他关键字混淆。减少键入?嗯,在大多数情况下都是相同的第一个字母大写的rd。对于int
我更喜欢知道长度(必须是在多个平台上使用C的旧习惯)。@mbx“大多数情况”?15个中有7个是相同的,除了大写字母;15个中有8个是不同的-太接近于说“大多数”。对于int
你知道长度-它被定义为4个字节。Re“颜色相同的所有类型”-这是主观的;我个人觉得以关键字的形式看它们更容易-它们是关键字,通常你对int
/bool
等的使用并不像你对somethingWrite
等的使用那样重要。我知道我在这一信念上远非独一无二(参见