C# и VB.NET поставляется со встроенными типами, которые сопоставляются с типами CLR. Примерами являются: int (C#) и Integer (VB) для карт System.Int32, long (C#) и Long (VB) для System.Int64. Каковы наилучшие методы решения, когда использовать встроенные типы или не использовать их (используя вместо них System. * Structs/classes)?Встроенные типы, когда (не) использовать?
ответ
Единственный раз, когда я когда-либо явно использовал «System.XYZ"
, в отличие от встроенного ключевого слова типа, когда мне нужен целочисленный тип очень определенного размера, и я хочу, чтобы это было ясно для всех, кто читает мой код (например, я может использовать Int32
вместо int
, если число в вопрос на самом деле 4 8-битовые поля упакованы вместе.)
типы языка (например, строка, INT, символ) просто псевдонимы для типов CLR (System.String, система .Int32, System.Char).
Они взаимозаменяемы, нет необходимости отдать предпочтение друг другу.
EDIT
Плакат попросили о помощи в выборе между этими двумя, очень хорошо.
Лично я , как правило, выбрать типы языка C# (INT, строка, символ и т.д.), поскольку они включают меньше набирать - я полагаю, я просто ленивый :)
Другими словами. Это то же самое. Think: String s = "hi"; Строка s2 = s; s и s2 - это одна и та же строка. – jjnguy
@jjnguy: Это не значит, что значения S & S2 равны, игнорируйте значения. Я говорю, что типы, которые содержат значения (а не значения), идентичны. т. е. строка s1 = "Hello"; System.String s2 = «Мир»; s1 - тот же ТИП, что и s2, независимо от того, что их значения различаются. –
Я почти всегда использовать встроенные в псевдонимах, таких как int/short/long. Их легче читать и не требуют, чтобы вы импортировали систему или набирали System.Int32 всюду и т. Д.
Язык четко определяет их и дает им конкретное значение, поэтому я не вижу никакого вреда. Тем не менее, это 100% личный выбор.
Это говорит о том, что одно место, где я явно использую Int32, Int16 и т. Д., - это если я имею дело с двоичным хранением или переносом, особенно в пользовательский двоичный формат или из него. В этом случае наличие явного битрейта каждого элемента, входящего и выходящего из файла, делает код более читабельным и понятным, ИМО.
Использование «int» и «Int32» (и других) точно такое же. Типично используются ключевые слова (int, Integer (vb.net), bool и т. Д.), Поскольку он короче и выложен в среде IDE.
Я всегда использую типы System.*
, потому что они выглядят более согласованными между другими классами - первой буквой верхнего регистра и той же подсветкой синтаксиса. Но это только личное предпочтение и просто эстетическая проблема.
Вместо того, чтобы использовать или не использовать типы языков в сравнении с явными именами классов BCL, более важно знать, является ли тип, который вы собираетесь использовать, CLS Compliant.
В частности, целые типы без знака не являются совместимыми с CLS, потому что нет требования, чтобы язык поддерживал беззнаковое целочисленное математическое выражение.
За исключением этой морщинки ... Я бы рекомендовал, какая идиома в большей степени соответствует вашим практикам кода организации. Если вы полностью назовете ваши ссылки на типы, я продолжу этот шаблон с пространством имен System. * ... (я бы также рекомендовал против этой практики, поскольку он добавляет нагрузку считывателя без сопутствующего усиления в ясности).
И 6 лет спустя: в наборе правил StyleCop используются встроенные функции. –
- 1. Когда следует использовать встроенные функции?
- 2. Встроенные типы данных python
- 3. Встроенные общие типы
- 4. Когда использовать встроенные документы MongoDB
- 5. Когда использовать какие типы
- 6. Почему в кусочках python допускаются не встроенные встроенные типы?
- 7. Встроенные функции Screeps не возвращают ожидаемые типы
- 8. Полиморфные встроенные типы значений JSON?
- 9. Когда встроенные функции не работают?
- 10. Сравнение заказов на встроенные типы python
- 11. Когда использовать внешнюю таблицу стилей и другие типы?
- 12. Что такое встроенные типы в Python?
- 13. Как расширить встроенные типы с набором атрибутов?
- 14. Возврат ссылки на временные (встроенные типы)
- 15. Когда использовать типы (vs interface) в TS
- 16. Данные весны: встроенные/не встроенные?
- 17. Просмотреть все встроенные типы данных общего назначения
- 18. Встроенные сложные типы XSD в WSDL
- 19. Какие встроенные типы поддерживает Jackson 2.6?
- 20. Когда использовать объекты Oracle (пользовательские типы)?
- 21. cython, когда использовать типы времени компиляции
- 22. Как использовать функции, когда их типы стираются?
- 23. Почему встроенные типы и классы обрабатываются по-разному, когда они не используются?
- 24. Не допускается использовать типы NULL
- 25. Как не использовать встроенные события js?
- 26. Почему рекомендуется не использовать встроенные условия?
- 27. Когда использовать примитив и когда ссылочные типы в Java
- 28. Когда использовать статические встроенные функции вместо обычных функций
- 29. Когда следует использовать память?
Я выбрал ответ Шона, потому что он дает мне твердую почву выбора между двумя вариантами.В другом ответе просто указывается, что «это равно, используйте либо» - это не очень полезно, ИМО. Если я смогу выбрать второй лучший ответ, это будет Рид. В любом случае, поскольку люди жалуются, я дам вам больше ответов ... –