为什么string的小写字母和大写字母版本存在,应该使用哪一个?

好吧,这可能是一个愚蠢的问题,但我一直没能find任何信息。

是String.Empty和string.Empty是一样的吗? 我总是发现自己倾向于使用大写字母版本(String.Empty),因为我喜欢它的颜色和外观在我的IDE比小写字母版本(string.Empty)…

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

有没有人知道的原因? 如果是这样,那是什么? 任何人都可以启发我吗?

PS“确切的重复”只回答了问题的一半 – “哪一个是对的?”,而不是“他们为什么都存在?


完全重复 : C#中的string和string有什么区别?

完全重复 : string与C#中的string

在C#中,小写types名称是System.xxxtypes名称的别名,例如, string等于System.Stringint等于System.Int32

为了保持一致性,最好的做法是将这些语言别名用于types名称,而不是等价的框架。 所以你做错了。 😉

至于它们都存在的原因,.NETtypes是存在的,因为它们被称为CTS(通用types系统)的.NET库的语言无关标准中定义。 为什么C#定义这些别名是超越我(VB做一些非常相似)。 我想这两个原因是

  1. 习惯。 通过为一些基本types提供相同的types名称,让所有这些C和Java程序员使用C#。
  2. 懒惰:你不必导入System命名空间来使用它们。

编辑由于许多人似乎更喜欢另一个符号,让我指出,这绝不是无理的。 实际上可以使用CTStypes名称而不是C#的关键字,在其他答案中提供了一些表面上很好的参数。 从纯度/风格的angular度来看,我可能会同意。

但是,请考虑这是否值得打破已经build立的惯例,有助于跨项目统一代码。

这在概念上类似于这样的事情:

 using int=System.Int32 

string映射到String类AFAIK,所以它们是相同的。

例如int和Int32也是如此。

他们都是一样的。

就我个人而言,我更喜欢使用小写string,“蓝色的”,使用C#关键字,而不是.NET类的名称,因为我使用int而不是Int32相同的原因。 此外,小写的不需要包含System命名空间。

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