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

В чем разница между String.Format и string.Format(и другими статическими членами примитивных типов данных)?

Насколько я могу судить, любой статический член класса типа String или Int32 также может быть доступен из соответствующего примитивного типа данных. Итак, String.Format совпадает с String.Format, а Int32.MaxValue совпадает с int.MaxValue.

Есть ли разница между этими двумя формами? Является предпочтительным для другого? Даже если они идентичны, можно ли считать их более читаемыми?

Изменить: поскольку они идентичны, предпочтительнее ли с точки зрения человека? Вы предпочли бы видеть String.Format или String.Format при чтении кода другого пользователя?

4b9b3361

Ответ 2

Это не связанные примитивные типы данных. Это просто сокращения, доступные на С#. string псевдонимы System.String и int алиасы System.Int32. Вызов int.MaxValue - это вызов Int32.MaxValue. С# просто позволяет вам вводить его в сокращенном виде, аналогично тому, что вы набираете, если бы вы были на другом C-подобном языке.

Ответ 3

Большинство ответов есть в целом. ОДНАКО, есть некоторые случаи, когда требуется псевдоним. Сверху моей головы:

public enum MyEnum:Byte {...} //will not compile

public enum MyEnum:byte {...} //correct

Есть еще несколько мест, где вы должны использовать псевдоним; кроме того это оно главным образом style. Следующие два правила общеприняты, возможно, первые больше второго:

  • Используйте псевдоним (ключевое слово нижнего регистра) для всех применений, определяющих переменную или тип члена (объявление, параметры, литье, закрытие типового типа)
  • Используйте имя типа (идентификатор класса PascalCased) для всех видов использования типа в статическом контексте (вызов статических методов, таких как парсеры или методы манипулирования строками, или статические свойства, такие как MinValue/MaxValue).

Ответ 4

Они идентичны. string и int являются синтаксическими алиасами для string и Int32 соответственно.

Ответ 5

Обратите внимание, что если вы войдете в вашу среду IDE и наведите указатель мыши на string, вы увидите, что она определена System.String

Это "псевдоним"... одно может быть сокращено для другой вещи. int является псевдонимом для Int32, байт является псевдонимом для байта, char является псевдонимом для Char и т.д. и т.д.

Ответ 6

Смешное доказательство их взаимозаменяемости - это сама IDE.
Начните вводить List<String> list = new, затем посмотрите на предложение IntelliSense: List<string>. Это даже не даст вам List<string> как один из вариантов.

Чтобы ответить на вторую часть вашего вопроса, которая является вопросом мнения, я предпочитаю int и string по верхнему регистру по многим причинам:

  • Ярко-синий цвет более определен, и если вы быстро читаете код, вы не можете ошибочно назвать имя класса для чего-то еще.
  • Чем меньше мне нужно нажать клавишу SHIFT +, тем быстрее я напечатаю
  • IntelliSense автоматически завершит имена в нижнем регистре, даже если вы начинаете с прописных букв, поэтому для меня это эстетически неудобно видеть версии верхнего и нижнего регистра того же класса в одной строке или даже в том же проект
  • Тип int очень прост по своему характеру, и я бы не хотел заставлять мои глаза связывать это с наличием буквы верхнего регистра и двух цифр от его имени (т.е. Int32); это заставляет его выглядеть слишком конкретным по какой-либо очевидной причине.

Один из моих коллег, в частности, используя Int32 и string, обеспечивает совместимость с будущими обновлениями .NET; Я не согласен с тем, кто это говорит. Докажите, что я неправ, пожалуйста!

Ответ 7

Строка

не является примитивным типом, а просто псевдонимом для String. Это одно и то же.