Навігація
Головна
 
Головна arrow Інформатика arrow Об'єктно-орієнтоване програмування
< Попередня   ЗМІСТ   Наступна >

ІНШІ ПРИЗНАЧЕНІ ДЛЯ КОРИСТУВАЧА ТИПИ

Класи є основними користувача типами. Але, крім них, також активно використовуються такі призначені для користувача типи, як: структури, перерахування та інтерфейси.

Структури

Структура - це окремий випадок класів, об'єкти яких зберігаються в стеку, а не в купі, як у класів.

Опис і використання структур

Оголошення структури виконується аналогічно оголошенню класу:

[Режім_доступа] [модифікатори] struct імя_структури

{

// тело_структури

}

У структурах не можна ініціалізувати поля при їх оголошенні, а також не можна оголошувати конструктори без параметрів.

Для структур не може бути заданий батьківський тип (клас або структура), проте структура може успадковувати інтерфейси. Крім цього, для структур непридатний модифікатор abstract.

Все, що може бути включено в клас, також може бути включено і в структуру: поля, методи і конструктори. Аналогічно класу структура може мати статичні і нестатичні поля і методи, може мати кілька конструкторів:

struct Points // структура опису точок

{

public float х, у;

public PointS (float хх, float уу) {х = хх; у = уу;}

public override string ToString () {return "{Х: і + x +", "+" Y: "+ у +

}

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

Console.WriteLine ( "Привласнення значущого типу!");

Points pts1 = new PointS (3, 5), pts2;

pts2 = pts1; Console.WriteLine ( "pts1: {0}; pts2 = pt1: {1}", pts1, pts2); ptsl.x + = 10; Console.WriteLine ( "pts1.x + = 10: {0}; pts2: {1}" Ipts1, pts2);

Console.WriteLine ( "Привласнення посилального типу!");

Point pt1 = new Point (3, 5), pt2;

pt2 = pt1; Console.WriteLine ( "pt1: {0}; pt2 = pt1: {1}", pt1, pt2);

pt1.x + = 10; Console.WriteLine ( "pt1.x + = 10: {0}; pt2: {1}", pt1, pt2);

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

Структури опису тимчасових даних

У просторі імен System бібліотеки FCL є вбудовані структури для роботи з даними про час, такі як DateTime і TimeSpan. Структура DateTime представляє момент часу, який зазвичай здасться у вигляді дати (рік, місяць, день) і часу дня (години, хвилини, секунди). У даній структурі описано велику кількість конструкторів, методів, властивостей і операцій. Прикладом конструктора є DateTime (int year, int month, int day). наприклад:

DateTime dTime = new DateTime (1980, 8, 15);

Часто використовуваним властивістю є Now, яке повертає поточний час, встановлене на комп'ютері. Властивість DayOfWeek повертає значення перерахування DayOfWeek.

Як приклад перевизначення операції можна привести перевизначення операції додавання: public static DateTime operator + (DateTime d, TimeSpan t)

У даній операції використовується ще одна структура TimeSpan, яка представляє інтервал часу, зазвичай в днях, годинах, хвилинах і секундах. Приклад створення екземпляра інтервалу часу показаний нижче:

// інтервал часу в 17 днів, 4 години, 2 хвилини і 1 сек.

TimeSpan tSpan = new TimeSpan (17, 4, 2, 1);

У цьому випадку операція додавання може бути виконана таким виразом:

DateTime result = dTime + tSpan;

Результатом цього виразу буде момент часу 01.09.1980 4:02:01.

 
Якщо Ви помітили помилку в тексті позначте слово та натисніть Shift + Enter
< Попередня   ЗМІСТ   Наступна >
 
Дисципліни
Агропромисловість
Аудит та Бухоблік
Банківська справа
БЖД
Географія
Документознавство
Екологія
Економіка
Етика та Естетика
Журналістика
Інвестування
Інформатика
Історія
Культурологія
Література
Логіка
Логістика
Маркетинг
Медицина
Нерухомість
Менеджмент
Педагогіка
Політологія
Політекономія
Право
Природознавство
Психологія
Релігієзнавство
Риторика
Соціологія
Статистика
Техніка
Страхова справа
Товарознавство
Туризм
Філософія
Фінанси
Пошук