С#.Net нечувствительная к регистру строка

Почему С#.Net разрешает объявление строкового объекта нечувствительным к регистру?

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

И нижний регистр, и верхний регистр S слова String приемлемы, и это, кажется, единственный объект, который позволяет это.

Может кто-нибудь объяснить, почему?

Ответ 1

string - это ключевое слово языка, а System.String - тип, который он псевдонимы.

Оба скомпилируются точно так же:

  • int - System.Int32
  • long - System.Int64
  • float - System.Single
  • double - System.Double
  • char - System.Char
  • byte есть System.Byte
  • short - System.Int16
  • ushort - System.UInt16
  • uint - System.UInt32
  • ulong - System.UInt64

Я думаю, что в большинстве случаев речь идет о четкости кода - все базовые типы системных значений имеют псевдонимы, я думаю, что нижний регистр string может быть просто согласован.

Ответ 2

В дополнение к другим ответам, хорошая практика заключается в использовании ключевых слов, если они существуют.

например. вы должны использовать строку, а не System.String.

Ответ 3

"String" - это имя класса. "string" - это ключевое слово, которое отображает этот класс.

это то же самое, что и

  • Int32 = > int
  • Десятичный = > десятичный
  • Int64 = > long

... и так далее...

Ответ 4

"string" - ключевое слово С#. это просто псевдоним для "System.String" - одного из классов .NET BCL.

Ответ 5

"string" - это просто псевдоним С# для класса "String" в пространстве имен System.

Ответ 6

Строка

является псевдонимом для System.String. Это одно и то же.

Однако, условно, объекты типа (System.String) обычно называются псевдонимом - например,

string myString = "Hello";

тогда как операции над классом используют прописную букву например.

String.IsNullOrEmpty(myStringVariable);

Ответ 7

Я использую String, а не строку, Int32 вместо int, так что подсветка синтаксиса выбирает строку как тип, а не ключевое слово. Я хочу, чтобы ключевые слова выскочили на меня.