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

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

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

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

Ответы [ 7 ]

41 голосов
/ 23 октября 2010

Нет никакой разницы, это псевдонимы типов в C # для типов каркаса .Net, ниже вы вызываете тот же метод.

Например:

  • int - этопсевдоним для System.Int32
  • string является псевдонимом для System.String

Полный список этих псевдонимов в MSDN можно найти здесь .

11 голосов
/ 23 октября 2010

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

8 голосов
/ 23 октября 2010

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

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

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

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

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

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

3 голосов
/ 23 октября 2010

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

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

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

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

3 голосов
/ 23 октября 2010

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

Это «псевдоним» ... одна вещь - это сокращениедля другого.int - это псевдоним Int32, byte - псевдоним Byte, char - псевдоним Char и т. д. и т. д.

2 голосов
/ 23 октября 2010
Строка

- это не простой тип, а просто псевдоним String Это одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...