Типи даних

C# є строго типізованою мовою програмування. Через це, кожна змінна та константа повинна мати тип. Як і в інших мовах програмування, в C# є своя власна система типів, яка використовується при створенні змінних.

Тип даних визначає:

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

Мова C# використовує прості типи даних платформи .Net Framework, при цьому в мові, для них, використовуються псевдоніми, тому при розгляді, ми будемо вказувати як псевдонім, так і повну назву типу даних з .Net. Для компілятора не має різниці яку форму запису назви ви використовуєте.

Примітивні типи даних мови C#

bool

Повна назва типу: System.Boolean

Використовується для оголошення змінних, в яких зберігаються логічні(булеві) значення true або false.

bool isEmpty = true;
System.Boolean isFull = false;

byte

Повна назва типу: System.Byte

Цілочисловий, беззнаковий тип даних, довжиною в 1 байт, в якому можна зберігати число з діапазону від 0 до 255.

byte b1 = 21;
System.Byte b2 = 125;

sbyte

Повна назва типу: System.SByte

Цілочисловий, тип даних зі знаком, розміром в 1 байт, в якому зберігаються числа з діапазону від -128 до 127.

sbyte sb1 = -123;
System.SByte sb2 = 42;

ushort

Повна назва типу: System.UInt16

Цілочисловий, тип даних без знака, довжиною в 2 байти, який може зберігати число з діапазону від 0 до 65 535.

ushort num1 = 324;
System.UInt16 num2 = 1024;

short

Повна назва типу: System.Int16

Числовий, тип даних зі знаком, розміром в 2 байти, в якому можна зберігати цілі числа з діапазону від -32 768 до 32 767.

short sNum1 = -1995;
System.Int16 sNum2 = 2048;

uint

Повна назва типу: System.UInt32

Цілочисловий, тип даних без знака, має розмір - 4 байти, в якому можна зберігати число з діапазону від 0 до 4 294 967 295.

uint uiNum1 = 777;
System.UInt32 uiNum2 = 11231;

int

Повна назва типу: System.Int32

Цілочисловий, знаковий тип даних, розміром в 4 байти, в якому можна зберігати число з діапазону від -2 147 483 648 до 2 147 483 647.

int iNum1 = -34531;
System.Int32 iNum2 = 56874;

ulong

Повна назва типу: System.UInt64

Цілочисловий, беззнаковий тип даних, довжиною в 8 байт, в якому можна зберігати число з діапазону від 0 до 18 446 744 073 709 551 615.

ulong ulNum1 = 7878;
System.UInt64 ulNum2 = 78444514;

long

Повна назва типу: System.Int64

Цілочисловий, знаковий тип даних, довжиною в 8 байт, в якому можна зберігати число з діапазону від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

long lNum1 = -12897;
System.Int64 lNum2 = 56554;

float

Повна назва типу: System.Single

Знаковий тип даних, розміром 4 байти для зберігання дробових чисел в діапазоні від ±1.5 ⋅ 10−45 до ±3.4 ⋅ 1038

float fNum1 = -3.146;
System.Single fNum2 = 12e3;

double

Повна назва типу: System.Double

Знаковий тип даних, займає в пам’яті 8 байт, для зберігання дійсних чисел від ±5 ⋅ 10−324 до ±1.7 ⋅ 10308

double dNum1 = -22.12;
System.Double dNum2 = 1.329e34;

decimal

Повна назва типу: System.Decimal

Знаковий тип даних, займає 16 байт, для зберігання дійсних чисел від ±1 ⋅ 10−28 до ±7.9228 ⋅ 1028

decimal decNum1 = -12.23;
System.Decimal decNum2 = 1.312e4;

На відміну від інших типів даних з плаваючою крапкою, діапазон decimal вужчий, при вищій точності. Завдяки цьому, він ідеально підходить для фінансових операцій.

C# дозволяє отримати мінімальне та максимальне значення, яке може приймати вказаний тип. Мінімальне значення зберігається в полі – MinValue, а максимальне в – MaxValue.

Console.WriteLine(ulong.MinValue);
Console.WriteLine(byte.MaxValue);

Окрім представлених діапазонів значень, типи з плаваючою крапкою float і double, можуть приймати наступні:

  • від’ємний і додатній нуль;
  • від’ємну(NegativeInfinity) та додатну(PositiveInfinity) нескінченність;
  • не числове значення NaN (Not a Number)

char

Повна назва типу: System.Char

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

char c1 = 'm';
char c2 = '\u263A';
System.Char tab = '\t';

string

Повна назва типу: System.String

Може містити в собі послідовність, довжиною від 0 і більше, символів Unicode формату.

string s1 = 'Hi!';
System.String s2 = 'Smile \u263A';

object

Повна назва типу: System.Object

Цей тип даних є базовим(всі інші від нього наслідуються) всіх інших типів даних платформи .Net. Може зберігати в собі значення будь якого типу даних.

object o1 = 564;
System.Object o2 = "Hello";

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

Неявна або качина типізація (duck typing) – типізація, при якій змінна залишається строго типізованою, а тип даних визначає компілятор виходячи з значення, що присвоюється змінній.

Назва качина типізація походить від “качиного тесту”:

«Якщо воно виглядає, плаває і крякає як качка, то це напевно і є качка»

В версії C# 3.0 з’явилась можливість неявно типізувати дані. Це дозволило спростити написання та аналіз коду програм, оскільки часто класи мають дуже довгі назви.

Для неявної типізації, замість типу даних, вказується ключове слово var.

Наступні два рядки коду еквівалентні:

int i = 256;
var i = 256;

Для неявної типізації характерні дві особливості:

  • змінну необхідно ініціалізувати одразу після оголошення;
  • не можна ініціалізувати змінну null-літералом(оскільки null не має явного типу).

Компілятор автоматично ставить тип даних int – для цілих чисел, та double – для чисел з крапкою.

Використання літеральних суфіксів

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

Тип Суфікс Приклад використання
uint U 123U
ulong UL 11UL
long L 222L
float F 2.2F
double D 2.3D
decimal M 1.2M

Регістр написання суфіксів не важливий.

Дивіться також: