Строка против строки [дубликат]
-
02-07-2019 - |
Вопрос
В С# есть String
объекты и string
объекты.
Какая разница между двумя?Каковы наилучшие методы использования?
Решение
Нет никакой разницы.строка (нижний регистр) — это просто псевдоним System.String.
Другие советы
Нет разницы. System.String
строго идентично string
.Общие рекомендации по программированию на C# указывают на то, что вам следует использовать ключевое слово string
.
Это псевдонимы, и они взаимозаменяемы.Однако стилистически для объявлений я использую строку в нижнем регистре, а для статических методов — String.
string foo = "bar";
if( foo != String.Empty )
{
Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
Один из них — System.String типа .Net, а другой — специфичный для C#, который оказывается псевдонимом System.String.
http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx
Нет никакой разницы.string — это псевдоним, который компилятор преобразует в System.String.
Фактически, в MSIL он даже имеет псевдоним:
.method private hidebysig static void Main(string[] args) cil managed
Между ними нет никакой разницы.строка — это просто псевдоним для System.String.При компиляции они оба компилируются в объект System.String.
Версия в нижнем регистре — это просто псевдоним реального класса String.Реальной разницы в том, как генерируется IL, нет.
Нет никакой разницы.string — это ключевое слово языка C#, которое ссылается на класс System.String, точно так же, как int — это ключевое слово, которое ссылается на System.Int32.
В будущем попробуйте скомпилировать приложение, использующее оба варианта, а затем использовать Reflector (измените язык на IL), чтобы просмотреть скомпилированный результат.Вы увидите, что нет никакой разницы.
Разницы нет, поскольку строка преобразуется в System.String компилятором.То же самое со всеми распространенными типами (int переходит в System.Int32 и т. д.).Мы используем простое имя, чтобы они выделялись.
Учитывая, что «int» в некоторых языках различается в зависимости от 16-битной/32-битной системы, «строка» в будущем может измениться и стать не такой же, как System.String.
Но на данный момент это так.
небольшое замечание:string/String — не единственная пара псевдонимов:например.Integer, Int32, int — все это псевдонимы.
@млисен:этого не происходит в C#, это не похоже на C.это потому, что в C# вы создаете не исполняемый файл, а скомпилированный код, как в java.