【问题标题】:C#.Net case-insensitive stringC#.Net 不区分大小写的字符串
【发布时间】:2010-09-05 19:14:11
【问题描述】:

为什么 C#.Net 允许字符串对象的声明不区分大小写?

String sHello = "Hello";
string sHello = "Hello";

字符串的小写和大写 S 都是可以接受的,这似乎是唯一允许这样做的对象。

谁能解释一下原因?

【问题讨论】:

  • 更多信息请见this question
  • 首先,它不区分大小写。你不能写STRINGstrinG 或其他任何东西。其次,它不是唯一具有别名的类型:objectObject 的别名; boolBoolean 的别名; doubleDouble 的别名等等。顺便提一下,void 也是 Void 的别名,但是 C# 不允许你使用 Void...

标签: c# .net


【解决方案1】:

string 是语言关键字,而 System.String 是它的别名类型。

两者都编译成完全相同的东西,类似地:

  • intSystem.Int32
  • longSystem.Int64
  • floatSystem.Single
  • doubleSystem.Double
  • charSystem.Char
  • byteSystem.Byte
  • shortSystem.Int16
  • ushortSystem.UInt16
  • uintSystem.UInt32
  • ulongSystem.UInt64

我认为在大多数情况下这是关于代码的易读性 - 所有基本系统值类型都有别名,我认为小写 string 可能只是为了保持一致性。

【讨论】:

    【解决方案2】:

    除其他答案外,最好使用关键字(如果存在)。

    例如您应该使用 string 而不是 System.String

    【讨论】:

      【解决方案3】:

      “String”是类的名称。 “string”是映射这个类的关键字。

      好像是一样的

      • Int32 => 整数
      • 十进制 => 十进制
      • Int64 => 长

      ...等等...

      【讨论】:

        【解决方案4】:

        “字符串”是 C# 关键字。它只是“System.String”的别名——.NET BCL 类之一。

        【讨论】:

          【解决方案5】:

          “string”只是 System-namespace 中“String”类的 C# 别名。

          【讨论】:

            【解决方案6】:

            string 是 System.String 的别名。它们是一样的。

            不过,按照惯例,类型 (System.String) 的对象通常称为别名 - 例如

            string myString = "Hello";
            

            而类上的操作使用大写版本 例如

            String.IsNullOrEmpty(myStringVariable);
            

            【讨论】:

            • 我不认为约定特别是使用大写版本进行操作。我当然没有看到写下来的。重要的是对公共名称使用 BCL 版本,例如ReadSingle 而不是 ReadFloat。
            • 说谁?没听说过这个约定!
            【解决方案7】:

            我使用字符串而不是字符串, Int32 而不是 int, 这样我的语法突出显示将字符串作为类型而不是关键字。我想让关键字跳出来。

            【讨论】:

              猜你喜欢
              • 2021-05-09
              • 2022-11-22
              • 1970-01-01
              • 2016-01-26
              • 1970-01-01
              • 2014-04-11
              • 2012-02-29
              相关资源
              最近更新 更多