在Visual Studio 2015中工作,我对条件的影响进行了条件检查:
if(String.IsNullOrWhiteSpace(stringToTest))
我看到一个IDE001 quick tip or action暗示"名称可以简化"建议更正:
if(string.IsNullOrWhiteSpace(stringToTest))
唯一不同的是使用string
代替String
。
MSDN examples使用带有String
的大写字母S,this SO answer说明" string
是C#中System.String
的别名。从技术上讲,没有区别。"
要明确的是,我的问题依赖于String vs. string内的答案,但我提出的问题不同于那里提出的问题。
同样相关的是this SO question,虽然那里的答案并没有真正解决这个问题。这个特殊问题与我的问题非常相似,但是我注意到它被标记为the other SO question的副本。 OP的there is a comment表明这是2015年才出现的全新行为。
我的问题
我的问题是,如果两个变量类型是等价的,并且MS示例使用大写版本,为什么我看到使用小写版本的快速操作?是否有更改.NET 4.6框架和VS2015鼓励使用小写版本?我似乎不应该看到这种类型的小费。
答案 0 :(得分:3)
我只是在猜测,但在我看来,快速提示旨在帮助您简化System.String
到string
,而忽略了using
已使其冗余的事实,至少在字符数量方面。
答案 1 :(得分:3)
嗯,比我聪明的人注意到编译水平实际上并没有差别,和你一样(和JohnyL一样,你会看到;),我也认为这是一个错误并得到了我的回答:
为什么我看到使用小写版本的快速操作?
从this信息丰富(和有趣)的错误讨论中得出,这些是此功能的要点:
String
关键字替换string
类型名称。事实上,2只发生了不同的情况只是一个巧合。在某些情况下,字符数不同(Int32 -> int
)或名称完全不同(Single -> float
)。string
的一致格式的人(它可能依赖于您编写的其他语言及其约定),此功能有助于更改现有源代码的一致性。< / LI>
string
也是具有明确定义含义的关键字,而String
的含义可能因上下文而异。 .NET 4.6框架和VS2015是否有变化以鼓励使用小写版本?
据我所知,没有。
顺便说一句,您可以在工具&gt;中更改此行为以符合您的偏好选项&gt;文本编辑器&gt; C#&gt;代码风格 - &gt;取消选中&#34;首选成员访问表达式中的内部预定义类型关键字&#34;。
答案 2 :(得分:1)
编译器没有区别,但IDE快速修复也用于确保良好的样式(例如命名约定)。您正在使用C#进行编程,因此您需要使用其功能(在本例中为bultin类型别名)。
我认为您使用int
代替Int32
,对吧? string
和String
也是如此。虽然string
技术上的长度没有实际差异,但这仍然是类似的情况。
答案 3 :(得分:0)
我怀疑将System.String
更改为string
的主要原因是因为它被视为原始的.NET。由于所有原语都有别名 - System.Int32
- &gt; int
,System.Char
- &gt; char
等,为了保持一致,&#34; string&#34;对待是一样的。浏览各种其他MSDN文档,您会看到这两个文档可以互换使用;我认为这对他们来说是一个简单的疏忽。
无论是否保证,我仍然会使用string
而不是String
作为快速提示。听起来像是Grandma's Cooking Secret的一个例子,但在这种情况下是否有理由改变这种行为?