Назад Вперед Зміст


Типи даних

Типи даних у мові C#

У мові C# є такі примітивні типи даних:

Класи та об’єкти в об’єктних мовах

Клас містить:

Об’єкти — екземпляри класу, є узагальненням поняття змінної.

На початковому етапі можна вважати, що:

Поняття клас і тип — синоніми, змінна і об’єкт — також синоніми.

Вбудовані типи, такі як int або string, і надалі називають типами, а їх екземпляри — змінними.

Для абстрактних даних, які описують, наприклад, клас ссавців, замість типу говорять клас, а замість змінної — об’єкт.

Такий погляд на типи й класи досить корисний, але не повний.

Класифікація типів даних у C#

Категорія Підкатегорія Типи даних Опис
Прості (вбудовані) Цілочисельні byte, sbyte, short, ushort, int, uint, long, ulong Використовуються для зберігання цілих чисел.
Дійсні (з плаваючою комою) float, double, decimal Використовуються для зберігання дійсних чисел.
Логічні bool Містить два можливих значення: true або false.
Символьні char Зберігає один символ у форматі Unicode.
Текстові string Послідовність символів (рядок).
Структуровані Масиви int[], double[], string[] Набір елементів одного типу, до яких звертаються за індексом.
Структури struct Користувацькі типи, що містять поля різних типів.
Переліки enum Перелік іменованих констант.
Визначені програмістом Класи class Описують об’єкти, що мають поля, властивості, методи, події.
Інтерфейси interface Визначають набір методів без реалізації.
Делегати delegate Посилання на метод або групу методів.
Записи record Не змінювані типи даних, зручні для зберігання об’єктів із властивостями.
За способом зберігання Значимі int, double, bool, struct, enum Зберігаються безпосередньо у стеку, містять власні дані.
Посилальні string, class, array, delegate, record Зберігають посилання на об’єкт, який знаходиться у керованій купі (heap).

Значимі та посилальні типи даних

Для значимих типів використовується пряма адресація — значення зберігає власне дані, і пам’ять для них виділяється в стеку.

Стек — це область пам’яті, яку підтримує процесор. Доступ до стеку у багато разів швидший, ніж до загальної області пам’яті.

Для посилальних типів значенням є посилання на певний об’єкт, розташований у динамічній пам’яті — “купі”. Кілька посилальних змінних можуть вказувати на один і той самий об’єкт і використовувати його значення.

У мові C# чітко визначено, які типи належать до посилальних, а які — до значимих.

До значимих типів належать: логічний, арифметичні, структури, перелік.

До посилальних типів належать: масиви, рядки та класи.

Типи даних C# та їх аналоги в .NET Framework

Усі вбудовані типи C# однозначно відображаються, а фактично збігаються із системними типами каркасу .NET Framework, розміщеними в просторі імен System. Тому всюди, де можна використовувати ім’я типу, наприклад int, із тим же успіхом можна використовувати й ім’я Int32.

Назва Ім’я типу C#Тип у Framework Діапазон значень Кількість бітів
Логічний bool Boolean true, false 8
Цілі sbyte SByte –128 — 127 8
byte Byte 0 — 255 8
int Int32 –2*109 — 2*109 32
long Int64 –9*1018 — 9*1018 64
Дійсні float Single 1.5*10-45 — 3.4*1038 32
double Double 5.0*10-324 — 1.7*10308 64
Символьні типи char Char U+0000 — U+ffff 16
string String рядок із символів Unicode -

Опис змінних

  1. Усі змінні повинні бути описані.
  2. Змінну описують у будь-якому місці програми, але перед її використанням.
  3. Під час опису спочатку вказують тип, а потім ім’я змінної.
  4. Мова C# чутлива до регістру. My і my — різні імена.

  5. Під час опису змінній одразу можна присвоїти значення (константу або будь-який вираз).

Приклади:

  
int i;  int a = 42; 
string g = "Hello, World!"; // у подвійних лапках
char c='*' // в одинарних лапках
double b = 1.2, d=45.6;

Усі змінні в програмі обов’язково повинні бути ініціалізовані (мати початкове значення)!!!

Область видимості змінних

Змінні існують лише у своїй області видимості, після виходу з якої “помирають”.

Область видимості змінної починається з рядка, де змінна оголошена, і закінчується закриваючою фігурною дужкою (змінну слід оголосити між цією дужкою та парною до неї відкриваючою).

Ось пояснювальний приклад:

  int k=3; 
Console.WriteLine(k);

Тут значення змінної k доступне і буде виведене на екран.

  { int k=3; } 
Console.WriteLine(k); 

У цьому ж прикладі вивести k на екран не вдасться — вона “померла” на закриваючій фігурній дужці.

Опис констант

Ось кілька прикладів опису іменованих констант:

  const int st = 55; 
const double pi = 3.14159265358979323846264338;

Під час введення дійсних констант у програмі можна використовувати спеціальні суфікси в кінці:

  const  double x = 37D;  
const  float x = 35F;

Використання суфіксів

Під час присвоєння значень слід мати на увазі таку особливість: усі дійсні літерали розглядаються як значення типу double. Щоб вказати, що дробове число належить типу float або decimal, потрібно додавати до літералу суфікс: F/f — для float і M/m — для decimal.

  1. float a = 3.14F;
  2. float b = 30.6f;
  1. decimal c = 1005.8M;
  2. decimal d = 334.8m;

Подібним чином усі цілочисельні літерали розглядаються як значення типу int. Щоб явно вказати, що цілочисельний літерал має тип uint, слід використовувати суфікс U/u, для типу long — суфікс L/l, а для типу ulong — суфікс UL/ul:

  1. uint a = 10U;
  2. long b = 20L;
  3. ulong c = 30UL;

Назад Вперед Зміст