2010-08-07 2 views

ответ

21

При нормальном использовании string и String идентичны; string - просто псевдоним для global::System.String. Там являются некоторые краевые случаи, хотя:

  • вам нужно using System; использовать String - вы не string
  • если определить локальную class String {}, то String относится к , что (это конечно, было бы глупостью). Вы не можно определить класс под названием string (хотя @string штраф)
+0

+1 для краев – Kawa

+0

+1 для получения :-) –

+2

+1 для упоминания вещей, о которых я не знал: P –

3

Нет никакой разницы. string (нижний регистр) - это просто псевдоним для System.String.

+0

Да, но 'string' всегда * является псевдонимом для' System.String', тогда как 'String' просто следует правилам поиска нормального типа. Если, например, у вас есть * другой класс, называемый 'String' в текущей области,' String' будет ссылаться на * это *, а не на 'System.String'. –

1

String - это псевдоним для объекта System.String, поэтому нет.

System.String - это тип типа Common Type, необходимый для взаимодействия с другими языками .NET. «string» - это просто C# ярлык для этого имени (таким же образом int является ярлыком для System.Int32)

2

string - ключевое слово C#. String - это тип System.String .NET.

Компилятор C#, предоставляемый MS, сопоставляет ключевое слово string с типом System.String .NET, поэтому они эквивалентны.

2

Ничего действительно, в C# ключевые слова типа являются синонимами для типов. Итак int = System.Int32 short = System.Int16 и string = System.String.

-1

Они одинаковы, без разницы, строка - это просто псевдоним для типа System.String, в C# есть другие подобные случаи, такие как int и System.Int32, long и System.Int64 (см. Другой родственный question)

Любопытно, что, хотя вы можете использовать псевдоним в своем коде вместо полных типов, вам все равно нужно знать базовый тип, если вы используете класс Convert, потому что нет методов ToInt или ToLong, но только ToInt32 и ToInt64.

+1

Не так любопытно, как это звучит: 'Convert' - это класс рамки, а не ключевое слово языка. Если у него были методы, названные в честь ключевых слов C#, методы не имели бы смысла в VB или F # или других языках .NET. –

Смежные вопросы