2008-09-22 3 views
17

В C# есть String объекты и string объекты.String vs string

В чем разница между этими двумя? Каковы наилучшие методы использования?

+0

Вы также можете найти это [вопрос и ответ] (http://stackoverflow.com/questions/7074/in-c-what-is-the-difference-between-string-and-string). – 2008-09-22 18:29:59

ответ

28

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

3

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

На самом деле, это даже псевдонимами в MSIL:

.method private hidebysig static void Main(string[] args) cil managed 
2

Там нет никакой разницы между ними. string - это просто псевдоним для System.String. Когда они скомпилированы, они оба скомпилированы в объект System.String.

2

Версия в нижнем регистре - это просто псевдоним для фактического класса String. Нет никакой реальной разницы, поскольку IL генерируется.

10

Это псевдонимы и являются взаимозаменяемыми. Однако, стилистически, для деклараций я использую строку с нижней строкой, а для статических методов я использую String.

string foo = "bar"; 

if(foo != String.Empty) 
{ 
    Console.WriteLine(String.Format("foo.Length = {0}", foo.Length)); 
} 
1

Нет никакой разницы, поскольку строка преобразуется в System.String компилятором. То же самое со всеми распространенными типами (int переходит в System.Int32 и т. Д.). Мы используем простое имя, чтобы они выделялись.

14

Нет разницы. System.String строго идентичен string. Общие правила кодирования C# указывают, что вы должны использовать ключевое слово string.

1

Там нет никакой разницы. string - это ключевое слово языка C#, которое относится к классу System.String, точно так же, как int - это ключевое слово, которое относится к System.Int32.

2

В будущем попробуйте выполнить компиляцию приложения, которое использует оба, а затем использовать Reflector (изменить язык на IL), чтобы просмотреть скомпилированный вывод. Вы увидите, что нет никакой разницы.

1

Учитывая, что на некоторых языках «int» различается в зависимости от 16-битной/32-битной системы, «строка» в будущем может развиваться не так, как System.String.

Но пока это так.

0

всего лишь небольшая заметка: строка/строка не единственная пара псевдонимов: например. Integer, Int32, int - все псевдонимы.

@mliesen: в C# этого не происходит, это не похоже на C. это потому, что из C# вы не создаете исполняемый файл, а компилируемый код, как java.