Тип даних однозначно визначає:
Внутрішнє представлення даних - безліч їх значень
Допустимі дії над даними (операції і функції)
Кожен вираз в програмі має певний тип. Пам'ять, в якій зберігаються дані під час виконання програми, діляться на дві області - стек і динамічна пам'ять. Стек використовується для зберігання величин, пам'ять під які виділяє компілятор. У динамічній області пам'яті (heap- купа) пам'ять резервується і звільняється під час виконання програми за допомогою спеціальних команд самим програмістом.
Класифікація типів даних в С # представлена на малюнку 3.1
Малюнок 3.1 - Класифікація типів даних в С # за різними ознаками
вбудовані типи
Вбудовані типи наведені в таблиці 3.1. Вони однозначно відповідають стандартним класам бібліотеки .NET певним в просторі імен System.
Як видно з таблиці, існує кілька варіантів представлення цілих і речових величин.
Внутрішнє представлення величини цілого типу - ціле число в двійковому коді. У знакових типах старший біт числа інтерпретується як знаковий (0-позитивне число, 1-негативне). Негативні числа найчастіше представляються в додатковому коді - все розряди числа, крім знакового розряду, інвертується, потім до числа додається одиниця, і знакової біту присвоюється одиниця. Беззнакові типи дозволяють представляти тільки позитивні числа, оскільки старший розряд розглядається як частина коду числа.
Речові типи зберігаються в пам'яті інакше, ніж цілочисельні. Внутрішнє представлення величини дійсного типу складається з двох частин - мантиси і порядку, кожна частина має знак. Довжина мантиси визначає точність числа, а довжина близько - його діапазон. Наприклад, число 0,381 * 10 ^ 4 зберігаються цифри мантиси 381 і порядок 4, для числа 560,3 * 10 ^ 2 - мантиса 5603 і порядок 5.
Тип decimal призначений для грошових обчислень, в яких критичні помилки округлення. Дані тип не відноситься до речових типам, у них різний внутрішнєподання. Величини грошового типу не можна використовувати в одному виразі з речовими буз явного перетворення типу.
Будь вбудований тип мови С # відповідає стандартному класу бібліотеки .NET. Скрізь, де використовується ім'я вбудованого типу його можна замінити ім'ям класу бібліотеки System. Це означає, що у вбудованих типів є методи і поля. наприклад:
double.MaxValue (System.Double.MaxValue) - максимальне значення числа типу double.
uint.MinValue (System.UInt32.MinValue) - мінімальне значення числа типу uint.
Таблиця 3.1 - Вбудовані типи мови С #