Подтвердить что ты не робот

Почему существуют строчные и строчные версии строки, и что я должен использовать?

Хорошо, это может быть глупый вопрос, но я не смог найти на нем никакой информации.

Являются ли String.Empty и string.Empty одинаковыми? Я всегда оказываюсь тяготеющим к использованию версии верхнего регистра (String.Empty), потому что я предпочитаю цвет и внешний вид его в моей среде IDE, чем версия в нижнем регистре (string.Empty)...

Есть ли "правильный" способ использования этих, которые отличаются или полностью зависят от личных предпочтений? Это было мое предположение, что они оба одинаковы, но, честно говоря, я никогда не думал об этом, пока по какой-то причине сегодня я не подумал: "Если они оба существуют, они оба должны существовать по какой-то причине".

Есть ли причина, о которой все знают? Если так, то, что это? Может ли кто-нибудь просветить меня?

P.S. "Точные дубликаты" отвечают только на половину вопроса - "что правильно?", А не "почему они оба существуют?"


Точный дубликат: В чем разница между строкой и строкой в ​​С#?

Точный дубликат: Строка vs string в С#

4b9b3361

Ответ 1

В С# имена нижних регистров являются псевдонимами для имен типов System.xxx, например. string равно System.String и int равно System.Int32.

Лучше всего использовать эти языковые псевдонимы для имен типов, а не их эквивалентную структуру, ради последовательности. Поэтому вы делаете это неправильно.; -)

По той причине, что они оба существуют, существуют типы .NET, поскольку они определены в независимом от языка стандарте для библиотек .NET, называемых CTS (система общего типа). Почему С# определяет, что эти псевдонимы находятся вне меня (VB делает что-то очень похожее). Я думаю, что две причины:

  • Привычка. Попросите всех этих программистов на C и Java использовать С#, указав одинаковые имена типов для некоторых основных типов.
  • Лень: вам не нужно импортировать пространство имён System, чтобы использовать их.

EDIT. Поскольку многие люди предпочитают другие обозначения, позвольте мне отметить, что это отнюдь не необоснованно. Хороший случай действительно может быть сделан для использования имен типа CTS, а не для ключевых слов С#, и некоторые другие аргументы, представленные на поверхностном уровне, предлагаются в других ответах. С точки зрения чистоты/стиля я, вероятно, соглашусь.

Однако подумайте, стоит ли нарушать хорошо установленный договор, который помогает унифицировать код между проектами.

Ответ 2

Это концептуально похоже на что-то вроде этого:

using int=System.Int32

Ответ 3

Строка

сопоставляется с классом String AFAIK, поэтому они одинаковы.

То же самое верно для, например, для int и Int32.

Ответ 4

Они оба одинаковы.

Лично я предпочитаю использовать строчную строчку, "синюю", используя ключевое слово С# вместо имени класса .NET по той же причине, что и я использую int вместо Int32. Кроме того, нижний регистр не требует включения пространства имен System...

Ответ 5

Лично я предпочитаю использовать String, поскольку как String, так и Object являются ссылками, тогда как все остальные базовые типы являются типами значений. На мой взгляд, это самое четкое разделение.