Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制Resharper为自动生成的代码使用CLR类型名称?_C#_.net_Vb.net_Naming Conventions_Resharper - Fatal编程技术网

C# 如何强制Resharper为自动生成的代码使用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作为类型呈现。由于修

根据规则,CLR类型名称的使用(例如
String
Int16
)应优先于特定语言类型名称的使用(
String
short
)。我通常遵循这个建议。然而,Resharper似乎在生成代码时使用了特定于语言的类型名(如extract方法、生成foreach循环等重构),这非常烦人

如何强制Resharper改用CLR类型名称

更新
许多人想知道为什么有人会强制使用
Int32
而不是
int
String
而不是
String
的样式,其目的是更好地语法突出显示:int作为关键字呈现,Int32作为类型呈现。由于修改突出显示实现似乎有些过分,强制执行CLR类型就可以完成这项工作。这就是为什么这是我们的样式指南的一部分的原因。

这些指南是指api上的公共方法名称,例如
obj.ReadInt32()
(可能在序列化程序中)。在代码体(变量和参数)中,它的指定较少。就我个人而言,我更喜欢别名
double
int
等-例如:

  • 更好的突出显示
  • 少打字
  • 避免非关键字使用问题,即如果我有另一个名为
    Int32
    的方法/类型/属性/etc(愚蠢,但可能;其中as
    int
    始终表示
    global::System.Int32
  • 即使您没有
    使用系统也可以工作
就我个人而言,我不会为此担心。R#没有做错任何事


顺便说一句——请注意,有几个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
vs
short
,还是
short
vs
Int16
?@AakashM我的问题是关于在特定于语言的类型名称(通常也是该语言中的关键字)上使用CLR类型.回答你的问题:
short
vs
Int16
。正如我已经说过的,找到(自动生成的)是非常烦人的提取的方法和生成的属性不符合实际的样式指南。不使用系统是一个要点。更好的突出显示?使用CLR类型的一个原因实际上是突出显示:所有类型都具有相同的颜色、用户定义的类型以及语言类型,以避免将它们与其他关键字混淆。减少键入?嗯,在大多数情况下都是相同的第一个字母大写的rd。对于
int
我更喜欢知道长度(必须是在多个平台上使用C的旧习惯)。@mbx“大多数情况”?15个中有7个是相同的,除了大写字母;15个中有8个是不同的-太接近于说“大多数”。对于
int
你知道长度-它被定义为4个字节。Re“颜色相同的所有类型”-这是主观的;我个人觉得以关键字的形式看它们更容易-它们是关键字,通常你对
int
/
bool
等的使用并不像你对
somethingWrite
等的使用那样重要。我知道我在这一信念上远非独一无二(参见