C#.Net不区分大小写的字符串

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

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

单词String的小写S和大写S都是可接受的,这似乎是允许这个的唯一对象。

有人可以解释为什么吗

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

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

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

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

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

例如,您应该使用字符串而不是System.String

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

它是一样的

  • Int32 => int
  • 十进制=>十进制
  • Int64 =>长

… 等等…

“string”是一个C#关键字。 它只是“System.String”的别名 – 一个.NET BCL类。

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

string是System.String的别名。 他们是一样的东西。

但是,按照惯例,类型(System.String)的对象通常被称为别名 – 例如

 string myString = "Hello"; 

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

 String.IsNullOrEmpty(myStringVariable); 

我使用String而不是字符串,Int32而不是int,因此我的语法突出显示将字符串作为Type而不是关键字。 我想要关键字跳出来。