Типи даних в C #

C # - мова програмування зі статичної типізацією. Тобто кожна змінна перед використанням повинна бути оголошена і їй має бути надано тип зберігаються в ній даних, який закріплюється за цієї змінної на протязі її існування в програмі.

Правила оголошення та ініціалізації змінних

Змінні оголошуються в такій формі:

Type variable_name; // type - тип даних, variable_name - ім’я змінної

При оголошенні змінної за нею закріплюється тип і виділяється відповідна область пам’яті.

Ім’я змінної має відповідати наступним правилам:

  • Не можна використовувати зарезервовані слова мови C # в якості імені;
  • Ім'я може складатися з цифр, латинських букв і символу підкреслення, але не можна використовувати цифру в якості першого символу;
  • Максимальна довжина імені 255 символів;

Для подальшого використання змінну також потрібно Форматувати - надати їй початкове значення.

Це можна відразу зробити в рядку оголошення за допомогою оператора присвоювання (=). При ініціалізації можна використовувати не тільки константи, а й будь-які обчислювальні вирази на основі об’єктів і операторів C #.

Приклади оголошення і ініціалізації:

Int my_variable; // Оголошення
Int 1variable; // Неправильне ім’я, компілятор видасть повідомлення про помилку;
Int copy_variable = my_variable; // Помилка, так як змінна my_variable НЕ инициализирована;
Double pi = 3.1416; // Оголошення з ініціалізацією;
Bool OnOff;
Bool isOn = true;
OnOff = isOn; // Відкладена ініціалізація;

Також, при присвоєнні змінній значення з плаваючою точкою важливо знати про суфіксах. Компілятори часто за замовчуванням сприймають числа з плаваючою точкою як тип Double . Для типу Float потрібно додавати в кінці F , для Decimal - M , а для Double - D :

Float flt = 15.36f;
Decimal dcml = 30.43m;
Double dbl = 10.453d;

Типи даних

Відповідно до особливостей використання різних областей пам’яті (стек і купа) і подальшої взаємодії змінних, типи даних поділяють на типи значень (value type) і посилальні типи (reference type). У таблиці вказані вбудовані типи в C # з посиланнями на документацію MSDN.

Типи значень

Довідкові типи

Цілочисельні (sbyte, byte, short, ushort, int, uint, long, ulong, char)

Оголошення посилальних типів

Клас (class)

З плаваючою комою (float, double)

Інтерфейс (interface)

Десятковий (decimal)

Делегат (delegate)

Логічний (bool)

Вбудовані посилальні типи

Рядок (string)

Структури (struct)

Об’єкт (object)

Перерахування (enum)

Динамічний (dynamic)

Далі розглянемо кожен тип значень окремо.

Цілочисельні типи

Цілочисельні типи розрізняються між собою обсягом займаної пам’яті і діапазоном можливих значень:

Тип

Системний тип (.NETFramework)

Розмір в байтах

Діапазон значень

типи даних в c #

Sbyte, short, int і Long є цілочисельними типами зі знаком. Працюючи з такими числами, компілятор C # в двійковому поданні вважає перший біт прапором знака: 0 - позитивний, 1 - негативний. Щоб уявити ціле число зі знаком мінус у такому вигляді, його модуль перетвориться в двійкову систему числення, біти замінюються на протилежні, а в якості старшого біта додається одиниця.

Найчастіше в C # використовується тип int , так як він надає достатній діапазон для більшості обчислювальних потреб. Якщо ви точно знаєте майбутній діапазон значень оголошується цілочисельний змінної, в ідеалі варто вибрати відповідний тип. В іншому випадку, поскупившись на пару байт і, використавши short замість int, ви ризикуєте появою бага в програмі.

Також цілочисельним змінним можна присвоювати значення в шістнадцятковій системі числення, використовуючи префікс 0x. Наприклад, так:

Byte sxt = 0xf0;

Окрему увагу варто приділити типу Char , який відповідає за подання символів. Його 16-розрядний двійковий код при перетворенні в шістнадцяткову систему числення стає чотиризначною кодуванням символу Unicode.

Юнікод охоплює символи майже всіх мов світу, а так само безліч спецсимволов. У десятковому поданні це ціле число від 0 до 65535. Стандартний 8-бітний ASCII код представляється в юникоде в оригінальному порядку від 0 до 127 (тобто від U + 0000 до U + 007f). Символьні значення присвоюються за допомогою одинарних лапок:

Char k = ‘c’;

Типи чисел з плаваючою комою

Типів з плаваючою комою всього два:

Тип

Системний тип (.NET Framework)

Діапазон

Точність

Розмір в байтах

Як вже говорилося, при ініціалізації компілятор присвоює нецілочисельне значенням тип Double . Також він часто робить це при неявному перетворенні в тип з плаваючою комою. Якщо ж ви хочете заощадити 4 байта, знаючи, що точність в даному випадку не сильно важлива, то можете використовувати тип Float за допомогою суфікса F .

Float Value = 1.72f;

Десятковий тип

Десятковий тип ( Decimal ) застосовується там, де потрібна висока точність чисел з плаваючою комою. Він займає 16 байт, може зберігати значення в діапазоні від -7.9 * 1028 до 7.9 * 1028 з точністю до 29 знаків після коми, і представлений системним типом System. Decimal .Створено цей тип Для застосування в фінансових розрахунках .

Decimal Value = 1.72m

Логічний тип

Логічний тип ( Bool ) може приймати всього два значення: true або false. Він займає 1 байт і успадковується від структури System. Boolean. Змінної типу bool можна привласнити будь-який вираз, що обчислюється як bool. наприклад:

Bool c = (a == b); // Якщо значення a дорівнює значенню b, bool буде присвоєно true, інакше false

Структура

Структура (struct) - тип, в якому можна зберігати деяку кількість різнотипних змінних (полів), а також методи, оператори, властивості, конструктори та інше, властиве класу C #. Їх відмінність в тому, що struct - це знаковий тип, а class - контрольний. Детальніше їх відмінності описані в окремому розділі.

Приклад структури з полями:

Public Struct Bycicle
{
Public String name = ‘TwoWheels’;
Public Byte gears = 18;
Public Float price = 99.99;
}

Перерахування

Перерахування оголошуються ключовим словом enum. Це набір іменованих констант будь-якого цілочисельного типу, крім char. наприклад:

Enum CountdownFromThree: Byte {Zero, One, Two = 2, Three};

Хоча в прикладі инициализирован тільки Нумератор Two, іншим за замовчуванням привласнені значення по порядку, починаючи з 0.

Неявна типізація

У C # є можливість неявній типізації - коли компілятор самостійно намагається визначити тип оголошеної і ініційованої змінної. Робиться це за допомогою ключового слова var, в оголошенні замінює тип. При цьому ініціювати зміну якимось значенням обов’язково, адже саме за цим значенням компілятор буде судити про тип змінної. Виглядає це так:

Var lucky = ‘k’; // Буде обраний тип змінної char
Var fin = 23.91352342132m; // Буде обраний тип змінної decimal, завдяки суфіксу m

Динамічні змінні

У C # є особливий тип, що надає деякі можливості динамічної типізації. Він оголошується ключовим словом Dynamic . По суті, цей тип все ж є статичним, але він обходить перевірку компілятора. Після компіляції він перетворюється в object. І далі все просто: якщо ви правильно використовували динамічний тип і подальший хід програми з використанням такої змінної правильно працює з будь-яким її значенням, то ви заощадили деякий час виконання і написали граціозний код, який реагує відразу на кілька типів прийнятих значень. Якщо ж ви допустили помилку, то дізнаєтеся про неї вже в ході виконання програми, так як самі заборонили компілятору розпізнати її.

Dynamic Value = ‘a’;

Підписуйтесь на ресурс якщо хочете вивчити C # і інші популярні мови програмування



ЩЕ ПОЧИТАТИ