Строка по сравнению со строкой [дубликат]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

29
задан cнŝdk 11 October 2018 в 08:20
поделиться

12 ответов

Нет никакого различия. строковый (нижний регистр) является просто псевдонимом для Системы. Строка.

34
ответ дан Ben Hoffstein 28 November 2019 в 00:57
поделиться

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

16
ответ дан Joannes Vermorel 28 November 2019 в 00:57
поделиться

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

string foo = "bar";

if( foo != String.Empty )
{
   Console.WriteLine(String.Format("foo.Length = {0}", foo.Length));
}
11
ответ дан Forgotten Semicolon 28 November 2019 в 00:57
поделиться

Каждый - Система. Представьте Тип.Net в виде строки, и каждый характерен для C#, который оказывается псевдонимом назад к Системе. Строка.

http://msdn.microsoft.com/en-us/library/362314fe (По сравнению с 71) .aspx

4
ответ дан Smallinov 28 November 2019 в 00:57
поделиться

Нет различия. строка является псевдонимом, который компилятор преобразовывает в Систему. Строка.

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

.method private hidebysig static void  Main(string[] args) cil managed
3
ответ дан Eric Z Beard 28 November 2019 в 00:57
поделиться

Нет никакого различия между ними. строка является просто псевдонимом для Системы. Строка. Когда скомпилировано они оба компилируются в Систему. Строковый объект.

2
ответ дан Nick Berardi 28 November 2019 в 00:57
поделиться

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

2
ответ дан Mike 28 November 2019 в 00:57
поделиться

Нет никакого различия. строка является ключевым словом языка C#, которое относится к системе классов. Строка, точно так же, как интервал является ключевым словом, которое относится к Системе. Int32.

2
ответ дан Daniel Plaisted 28 November 2019 в 00:57
поделиться

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

2
ответ дан Haacked 28 November 2019 в 00:57
поделиться

Нет никакого различия, потому что строка преобразовывается в Систему. Строка компилятором. То же со всеми общими типами (интервал переходит к Системе. Int32, и т.д.). Мы используем простое имя, таким образом, они выделяются.

1
ответ дан user20620 28 November 2019 в 00:57
поделиться

Полагая, что “int” отличается на некоторых языках в зависимости от 16bit/32bit системы, "строка" могла в будущем развиваться для не совпадения с Системой. Строка.

, Но на данный момент это.

1
ответ дан Martin Liesén 28 November 2019 в 00:57
поделиться

просто немного примечания: Строка/Строка не является только несколькими псевдонимами: например, Целое число, Int32, интервал является всеми псевдонимами.

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

1
ответ дан stefano m 28 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: