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

标签 c#

<分区>

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

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

是否有一种“正确”的方式来使用这些不同的方法,或者完全取决于个人喜好?我曾假设它们是相同的,但老实说,直到今天出于某种原因我想知道“如果它们都存在,它们一定都存在是有原因的”,我才考虑过这个问题。

是否有任何人知道的原因?如果是这样,它是什么?谁能赐教一下?

附言“完全重复”只回答了问题的一半 - “哪个是正确的?”,而不是“为什么它们都存在?”


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

完全重复:String vs string in C#

最佳答案

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

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

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

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

编辑 由于许多人似乎更喜欢其他表示法,所以我要指出这绝不是不合理的。使用 CTS 类型名称而不是 C# 的关键字实际上是一个很好的例子,其他答案中提供了一些表面上很好的论据。从纯度/风格的角度来看,我可能会同意。

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

关于c# - 为什么存在字符串的小写和大写版本,我应该使用哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452368/

相关文章:

c# - 在结束过程中回收 native 资源?

c# POST JSON as camel case for all requests

c# 使用静态方法扩展 String 类

c# - 从 foreach 中的 Dictionary 中删除一个键会导致问题吗?或者我应该更好地构建一个新的词典?

c# - Assert.AreEqual 在单元测试期间失败

C# 我如何进行加密?

c# - 将条件传递给函数参数

c# - 委托(delegate)是不可变的,但是如何呢?

c# - 在 Entity Framework Code First 中忽略基类型是否也会忽略子类?

c# - 在 "long"间隔后完成可观察序列