Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕМА 4. ТИПИ ДАНИХ ТА ЗМІННІ..docx
Скачиваний:
5
Добавлен:
22.11.2019
Размер:
146.77 Кб
Скачать

Тема 4. Типи даних та змінні.

  1. Система типів .NET. Вбудовані типи даних у CTS.

  2. Оголошення та ініціалізація змінних. Константи. Область видимості та час існування змінної.

  3. Операції та вирази.

  4. Літерали.

  5. Поняття стеку і купи. Значимі та посилальні типи даних у .NET і С#.

  6. Приведення типів даних.

1. Система типів .Net. Вбудовані типи даних у cts.

Тип (сорт) - відносно стійка і незалежна сукупність елементів, яку можна виділити у деякій множині.

Нагадаємо, що загальна система типів (CTS) – це формальна специфікація, що описує як повинні визначатися типи, хостинг яких забезпечується середовищем часу виконання CLR.

Рис. 1. Система типів .NET.

Усі прості типи можна поділити на:

  • Цілочисельні;

  • З плаваючою крапкою;

  • Логічні.

Структури. Концепція структур в CTS також формалізована. Якщо у вас є досвід програмування на C або Pascal, ви будете раді дізнатися, що визначені користувачем типи (User-defined Types, UDT) у світі .NET залишилися (хоча внутрішньо їх поведінка трішки змінилася). Кажучи просто, структури можна вважати полегшеною версією класів, що має семантику, базовану на значеннях. Зазвичай структури краще всього підходять для моделювання геометричних і математичних даних. Структури в С# створюються за допомогою ключового слова struct:

Приклад 1. Структура Student.

1: struct Point

2: {

3: // Поле структури

4: public int x, y;

5:  

6: //Параметризований конструктор

7: public Point(int xPosition, int yPosition)

8: {

9: x = xPosition;

10: y = yPosition;

11: }

12:  

13: //Метод структури

14: public void Display()

15: {

16: System.Console.WriteLine("({0}, {1})", x, y);

17: }

18: }

Класи. Кожна .NET-сумісна мова підтримує як мінімум поняття типу-класу, що є наріжним каменем об'єктно-орієнтованого програмування (ООП). Клас може складатися з будь-якої кількості членів (таких як властивості, методи і події) та елементів даних (полів). У С# класи оголошуються за допомогою ключового слова class:

Приклад 2. Клас Student.

1: class Student

2: {

3: private int age;

4: public int GetAge()

5: {

6: return age;

7: }

8: }

Перелічувальні типи.

Перелічувальні типи — це зручна програмна конструкція, що дозволяє групувати пари ім'я/значення. Наприклад, припустимо, що ви створюєте гру про НаУ «ОА», яка дозволяє гравцеві вибирати одну з наступних категорій персонажів (Student, Teacher, Dekan, Rector), які по суті дають різні рівні доступу до інформації. Логічно, можна було б це представити у вигляді списку цілочисельних значень:  int Student = 0;

int Teacher = 1;

int Dekan = 2;

int Rector = 3;

Замість числових значень для представлення цієї можливості ви можете створити перелічувальний тип, використовуючи ключове слово enum:

Приклад 3. Перелічуваний тип CharacterType.

1: public enum CharacterType

2: {

3: Student = 0,

4: Teacher = 1,

5: Dekan = 2,

6: Rector = 3

7: }

Типи делегати та інтерфейси будуть розглянути під час вивчення основ ООП.

Останній аспект CTS, про який треба знати на даний момент, це те, що CTS створює строго певну множину базових типів даних. Хоча конкретна мова зазвичай має унікальні ключові слова, використовувані для оголошення вбудованих в CTS типів даних, ключові слова всіх мов зрештою перетворюються до одних і тих же типів даних, визначених у збірці під назвою mscorlib.dll.

Таблиця 1

Вбудовані типи даних у CTS

Логіний тип

Ім’я типу

Системний тип

Значення

Размір

Bool

System.Boolean

true, false

8 біт

Арифметичні цілочисельні типи

Ім’я типу

Системний тип

Значення

Розмір

sbyte

System.SByte

-128 — 127

Знакове, 8 Біт

byte

System.Byte

0 — 255

Беззнакове, 8 Біт

short

System.Short

-32768 —32767

Знакове, 16 Біт

ushort

System.UShort

0 — 65535

Беззнакове, 16 Біт

int

System.Int32

≈(-2*109 — 2*109)

Знакове, 32 Біт

uint

System.UInt32

≈(0 — 4*109)

Беззнакове, 32 Біт

long

System.Int64

≈(-9*1018 — 9*1018)

Знакове, 64 Біт

ulong

System.UInt64

≈(0— 18*1018)

Беззнакове, 64 Біт

Арифметичні типи з плаваючою крапкою

Ім’я типу

Системний тип

Значення

Точність

float

System.Single

+1.5*10-45 - +3.4*1038

7 цифр

double

System.Double

+5.0*10-324 - +1.7*10308

15-16 цифр

Арифметичний тип с фіксованою крапкою

Ім’я типу

Системний тип

Значення

Точність

decimal

System.Decimal

+1.0*10-28 - +7.9*1028

28-29 значащих цифр

Символьні типи

Ім’я типу

Системний тип

Значення

Розмір

char

System.Char

U+0000 - U+ffff

16 біт Unicode символ

string

System.String

Рядок із сиволів Unicode

Об’єктний тип

Ім’я типу

Системний тип

Примітки

object

System.Object

Базовий класс для усіх інших класів