:: Не фоксом единым
Примитивные типы
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Читая описание типа Type наткнулся на свойство msdn.microsoft.com . В описании сказано:

Цитата:
Возвращает значение, указывающее, является ли Type одним из типов-примитивов.

Даже есть список:

The primitive types are Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Char, Double, and Single.

В списке нет ни одного ссылочного или пользовательского типа.

Вопрос - по какому принципу эти типы отнесены к примитивным? Я правильно понимаю, что все значимые предопределённые (объявленные в CLR) типы являются примитивными?
Ratings: 0 negative/0 positive
Re: Примитивные типы
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Хотя, Decimal - значимый предопределённый тип, в этот список почему то не попал.

Опять таки, IntPtr - это структура, т.е. пользовательский тип.



Исправлено 1 раз(а). Последнее : S-type, 08.03.17 17:39
Ratings: 0 negative/0 positive
Re: Примитивные типы
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
Начнём с того что MS не даёт строгого определения тому что же они считают за primitive type. Чем он таким особенно "примитивен" Тупо дают список и всё.
Да, далеко НЕ ВСЕ системные value типы являются примитивными. Банально все generic-и не являются примитивными, тогда как тот же Nullable<T> вполне себе структура и вполне себе "системная".
IntPtr это не "пользовательский" тип. Все прочие перечисленные типы точно такие же "структуры" как и этот тип. "Структура" в данном случае значит то что экземпляр типа передаётся "по значению" - т.е. вызываемый метод получает копию значения, и даже новая переменная при присваивании ей значения из существующей тоже получает копию значения. Это совсем не аналог паскалевского или сишного понятия "структуры".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Примитивные типы
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
Начнём с того что MS не даёт строгого определения тому что же они считают за primitive type. Чем он таким особенно "примитивен" Тупо дают список и всё.

Типа "мы решили, что именно эти типы будут примитивными", правила нет и надо просто это выучить... Грустно.

Igor Korolyov
IntPtr это не "пользовательский" тип. [...] "Структура" в данном случае значит то что экземпляр типа передаётся "по значению" - т.е. вызываемый метод получает копию значения, и даже новая переменная при присваивании ей значения из существующей тоже получает копию значения. Это совсем не аналог паскалевского или сишного понятия "структуры".

На msdn.microsoft.com сказано:

public struct IntPtr : ISerializable

Если что то создано с помощью ключевого слова struct разве это не структура?
Ratings: 0 negative/0 positive
Re: Примитивные типы
S-type

Сообщений: 2969
Дата регистрации: 24.04.2004
Хотя:

public struct Boolean
public struct Byte

А это ведь не структуры. То есть IntPtr -это полноценный встроенный (предопределённый) тип.

Igor Korolyov
IntPtr это не "пользовательский" тип.

Что же тогда "пользовательский тип"?
Ratings: 0 negative/0 positive
Re: Примитивные типы
Igor Korolyov
Автор

Сообщений: 34580
Дата регистрации: 28.05.2002
И булево значение и все числа, и даты, и "символ" aka System.Char - структуры. Структура в понятиях C# это то что называется value type в понятиях CLR (точнее CTS). Она совершенно не обязана быть "чем-то состоящим из нескольких полей".
"Пользовательские типы" - ну это те что программист в своей программе определяет

Язык C# это не более чем "человеческая" надстройка над языком IL. А там как раз уже видно что это за зверь "primitive type". На таком низком уровне уже видно что есть какое-то к примеру 4-х байтовое значение, которым можно манипулировать как "просто значением" - да тупо складывать их - не вызывая никаких методов никаких типов.
Вот всё то что в IL имеет особую (прямую) обработку это и есть "примитивные типы". В более высокоуровневом языке типа C# этого примитивизма уже не видно - там остаются только "типы" - а то что компилятор их по особому обрабатывает - ну это иногда полезно знать, хотя в общем и целом это не влияет на процесс написания кода
weblogs.asp.net
flylib.com


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 7 (Гостей: 7)

© 2000-2024 Fox Club 
Яндекс.Метрика