Ответ 1
Примитивные типы не определены в Спецификации языка С#. Вместо этого они определены в самой .NET, и лучшая ссылка для примитивных типов - это смотреть на Type.IsPrimitive
на MSDN. В частности, в разделе "Примечания" перечислены доступные примитивные типы.
Итак, у нас есть полная ссылка здесь, это примитивные типы, определенные в Спецификации CLI (раздел I.8.2.2):
Вопреки распространенному мнению, только потому, что тип имеет соответствующее ключевое слово, не делает его примитивным типом, лучшим примером может быть string
.
С другой стороны, типы значений могут быть и не быть примитивами. Существует множество типов значений "встроенный" для .NET Framework в дополнение к тем, которые определены в спецификации CLI, но они не классифицируются как примитивы. Хорошим примером является DateTime
, который представляет собой struct
, предоставленный .NET Framework, по этому определению его можно считать "встроенным типом значения", Вы можете больше узнать о типах значений (которые, конечно же, будут охватывать и встроенные) здесь.