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


本问题已经有最佳答案,请猛点这里访问。

好吧,这可能是一个愚蠢的问题,但我还没有找到任何关于它的信息。

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

是否有一种"正确"的方式来使用这些不同的或完全取决于个人偏好?这是我的假设,他们都是一样的,但说实话,我从来没有想过这一点,直到今天,不管出于什么原因,我想"如果他们都存在,他们一定都有存在的理由"。

有谁知道其中的原因吗?如果有,是什么?有人能告诉我吗?

附注:"完全相同的复制品"只回答了问题的一半——"哪个是对的?",而不是"他们为什么都存在?"

完全复制:c#中的String和String之间有什么区别?

完全复制:c#中的字符串与字符串


在c#中,小写类型名是System.xxx类型名的别名,例如string = System.Stringint = System.Int32

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

由于它们都存在的原因,. net类型的存在是因为它们是在一个称为CTS(公共类型系统)的. net库的独立于语言的标准中定义的。为什么c#会定义这些别名,我无法理解(VB也做了类似的事情)。我想有两个原因

习惯。通过为一些基本类型提供相同的类型名,让所有这些C和Java程序员都使用c#。惰性:您不需要导入System名称空间来使用它们。

编辑,因为很多人似乎更喜欢另一种表示法,让我指出,这绝不是不合理的。实际上,使用CTS类型名而不是c#的关键字是一个很好的例子,其他答案中提供了一些表面上很好的参数。从纯粹/风格的角度来看,我可能会同意。

不过,请考虑是否值得打破有助于跨项目统一代码的良好约定。


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

1
using int=System.Int32


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

对于int和Int32也是如此。


就我个人而言,我更喜欢使用String,因为String和Object都是引用,而所有其他基类型都是值类型。在我的脑海里,那是最清晰的分离。


它们都是一样的。

就我个人而言,我更喜欢使用小写字符串"blue one",使用c#关键字而不是. net类名,原因与我使用int而不是Int32相同。此外,小写的不需要包含系统名称空间……