为什么存在字符串的小写和大写版本,我应该使用哪个?

时间:2009-01-16 23:07:47

标签: c#

好的,这可能是一个愚蠢的问题,但我无法找到任何相关信息。

String.Empty和string.Empty是一样的吗?我总是发现自己倾向于使用大写版本(String.Empty),因为我更喜欢IDE中的颜色和外观,而不是小写版本(string.Empty)......

是否有一种“正确”的方式来使用这些不同的方式或完全取决于个人喜好?这是我的假设,他们都是一样的,但说实话,我从来没有想过任何想法,直到今天无论出于什么原因我都想知道“如果他们都存在,他们必须都存在是有原因的。”

有没有人知道的原因?如果是这样,它是什么?谁能开导我?

P.S。 “完全重复”只回答问题的一半 - “哪个是对的?”,而不是“为什么它们都存在?”


完全重复What is the difference between String and string in C#?

完全重复String vs string in C#

5 个答案:

答案 0 :(得分:49)

在C#中,小写字母类型名称是System.xxx类型名称的别名,例如: string等于System.Stringint等于System.Int32

为了保持一致性,最好将这些语言别名用于类型名称而不是它们的框架等效项。所以你做错了。 ; - )

至于它们都存在的原因,存在.NET类型,因为它们是在一个名为CTS(通用类型系统)的.NET库的独立于语言的标准中定义的。为什么C#定义这些别名超出了我(VB做了类似的事情)。我想这两个原因是

  1. 习惯。通过为某些基本类型提供相同的类型名称,让所有这些C和Java程序员使用C#。
  2. 懒惰:您无需导入System命名空间即可使用它们。
  3. 编辑由于很多人似乎更喜欢其他符号,所以让我指出这绝不是不合理的。实际上可以使用CTS类型名称而不是C#的关键字,并且在其他答案中提供了一些表面上很好的参数。从纯度/风格的角度来看,我可能会同意。

    但是,请考虑是否值得打破一个有助于统一项目代码的完善惯例。

答案 1 :(得分:13)

它在概念上类似于这样的东西:

using int=System.Int32

答案 2 :(得分:5)

string被映射到String类AFAIK,因此它们是相同的。

对于例如int和Int32也是如此。

答案 3 :(得分:3)

他们都是一样的。

我个人更喜欢使用小写字符串“blue one”,使用C#关键字而不是.NET类名,原因与我使用int而不是Int32的原因相同。 此外,小写的不需要包含System命名空间...

答案 4 :(得分:3)

就个人而言,我更喜欢使用String,因为String和Object都是引用,而所有其他基类型都是值类型。在我看来,这是最明显的分离。