C# - Головна Простір імен
► System (5)► Microsoft (1) Для учнів (початківців)
► Відео уроки (4)► Навчання (177) ► Приклади програм (19) ► Секрети Сі Шарп (4) Для професіоналів
► Навчання (6)► Приклади програм (1) |
ТИПИ ДАНИХ
Типи даних прийнято поділяти на прості та складні залежно від того, як влаштовано дані. У простих (скалярних) типів можливі значення даних єдині і неподільні. Складні типи характеризуються способом структуризації даних - одне значення складного типу складається з безлічі значень даних, які організовують складний тип. Є й інші критерії класифікації типів. Так, типи поділяються на вбудовані типи і типи, визначені програмістом (користувачем). Вбудовані типи спочатку належать мові програмування і складають його базис. В основі системи типів будь-якої мови програмування завжди лежить базисна система типів, вбудованих в мову. На їх основі програміст може будувати власні, їм самим певні типи даних. Типи даних поділяються також на статичні і динамічні. Для даних статичного типу пам'ять відводиться в момент оголошення, необхідний розмір даних (пам'яті) відомий при їх оголошенні. Для даних динамічного типу розмір даних у момент оголошення звичайно невідомий і їм пам'ять виділяється динамічно за запитом в процесі виконання програми. Ще одна важлива класифікація типів - це їх поділ на значущі і смітники. Для значущих типів значення змінної (об'єкта) є невід'ємною власністю змінної (точніше, є власністю пам'ять, відведена значенням, а саме значення може бути змінена). Для посилальних типів значенням служить посилання на деякий об'єкт в пам'яті, розташований зазвичай у динамічній пам'яті - "купі".
нижче наведено перелік усіх вбудованих типів мови C# і їх основні характеристики.
Логічний тип
Арифметичні цілочисельні типи
Арифметичний тип з плаваючою точкою
Арифметичний тип з фіксованою точкою
Символьні типи
Об'єктний тип
Розглянемо приклад оголошення змінних і присвоювання їм значень:
int x=11; int v = new Int32(); v = 007; string s1 = "Agent"; s1 = s1 + v.ToString() +x.ToString();
У цьому прикладі змінна x оголошується як звичайна змінна типу int. У той же час для оголошення змінної v того ж типу int використовується стиль, прийнятий для об'єктів. В оголошенні застосовується конструкція new і виклик конструктора класу. В операторі присвоювання, записаному в останньому рядку фрагменту, для обох змінних викликається метод ToString, як це робиться при роботі з об'єктами. Цей метод, успадкований від батьківського класу Object, перевизначено у класі int, повертає рядок з записом цілого. Розглянемо ще один тип даних – структуру. Синтаксис оголошення структури аналогічний синтаксису оголошення класу:
[атрибути][модифікатори]struct имя_структуры[:список_интерфейсов] {тело_структуры}
Все, що може бути вкладено в тіло класу, може бути вкладено і в тіло структури: поля, методи, конструктори тощо, включаючи класи та інтерфейси. Аналогічно класу, структура може мати статичні і не статичні поля і методи, може мати кілька конструкторів, в тому числі статичні і закриті конструктори. Для структур можна створювати власні константи, використовуючи поля з атрибутом readonly і статичний конструктор. Структури схожі на класи за своїм описом і ведуть себе подібним чином, хоча і мають суттєві відмінності в семантиці присвоювання.
Але порівняно з класами, структури мають суттєві обмеження. 1) Найбільш серйозне обмеження пов'язане з обмеженням спадкування, тобто у структури не може бути спадкоємців, не може бути задано батьківський клас або батьківська структура. 2) Друге серйозне обмеження пов'язане з процесом створення об'єктів. Нехай T - структура, і дано оголошення без ініціалізації - T x. Це оголошення коректно, в результаті буде створений об'єкт без явного виклику операції new. Сутності x буде відведена пам'ять, і на цій пам'яті буде розташовано об'єкт. Але поля об'єкта не будуть ініціалізується і, отже, не будуть доступні для використання в обчисленнях. Про ці особливості докладно йшлося при розгляді значущих типів. В цьому відношенні все, що вірно для типу int, вірно і для всіх структур.
Переглядів: 2238 |