Структури і методи. Ініціалізація структур. Конструктори в структурах. Властивості в структурах
Зміст
- Питання/відповідь
- 1. Приклад структури, в якій оголошені методи
- 2. Яким чином можна ініціалізувати поля (дані) структури? Приклад
- 3. Чи можна в структурі оголошувати конструктор за замовчуванням?
- 4. Чи можна в структурі оголошувати деструктор?
- 5. Як в структурі оголосити явно заданий конструктор? Приклад
- 6. Приклад структури, що містить властивості
- Зв’язані теми
Пошук на інших ресурсах:
1. Приклад структури, в якій оголошені методи
Дано структуру, яка описує дані про абонента в телефонному довіднику. Структура має ім’я Telephone. У структурі реалізовано 5 полів і 11 методів, які оперують цими полями. Також у структурі є конструктор, що ініціалізує значення полів структури. Поля структури оголошені як приховані (приватні), тобто мають ідентифікатор доступу private. Методи та конструктор мають ідентифікатор доступу public і є загальнодоступними.
Нижче наведено код такої структури
struct Telephone { // поля структури - приватні private string number; // номер телефону private string name; // ім'я абонента private string surname; // прізвище абонента private string address; // адреса private int code; // поштовий код // конструктор, що ініціалізує поля структури public Telephone(string Number, string Name, string Surname, string Address, int Code) { // заповнення значень змінних - обов'язково мають заповнюватись усі поля структури number = Number; name = Name; surname = Surname; address = Address; code = Code; } // методи доступу до полів структури // читання даних public string Get_Number() { return number; } public string Get_Name() { return name; } public string Get_Surname() { return surname; } public string Get_Address() { return address; } public int Get_Code() { return code; } // заповнення даних структури public void Set_Number(string Number) { number = Number; } public void Set_Name(string Name) { name = Name; } public void Set_Surname(string Surname) { surname = Surname; } public void Set_Address(string Address) { address = Address; } public void Set_Code(int Code) { code = Code; } }
Приклад використання методів структури для оперування даними структури:
// демонстрація використання методів Telephone T1; // ініціалізація полів з допомогою конструктора T1 = new Telephone("900293", "Johnson ", "John", "Moscow", 3902); string Number, Name, Surname, Address; int Code; Number = T1.Get_Number(); // Number = "900293" Name = T1.Get_Name(); // Name = "Johnson" Code = T1.Get_Code(); // Code = 3902 // Встановити нове значення Number T1.Set_Number("777777"); Number = T1.Get_Number(); // Number = "777777" // Встановити нове значення Code T1.Set_Code(12345); Code = T1.Get_Code(); // Code = 12345
⇑
2. Яким чином можна ініціалізувати поля (дані) структури? Приклад
Для зручної ініціалізації полів даних структури, в структурі можна оголосити явно заданий конструктор.
Приклад. Реалізація явно заданого конструктора для структури типу Point, що описує точку на координатній площині. Оголошення структури наступне.
struct Point { public int x, y; // явно заданий конструктор public Point(int nx, int ny) { x = nx; y = ny; } }
Виклик конструктора при оголошенні екземпляру (об’єкту) структури.
Point P = new Point(5, 6); // P.x = 5; P.y = 6
⇑
3. Чи можна в структурі оголошувати конструктор за замовчуванням?
Конструктор за замовчуванням або конструктор без параметрів, не можна оголошувати в структурі. Для всіх структур система визначає конструктор за замовчуванням автоматично. Тому немає потреби у додатковому оголошенні конструктора за замовчуванням.
⇑
4. Чи можна в структурі оголошувати деструктор?
В структурі оголошувати деструктор не можна.
⇑
5. Як в структурі оголосити явно заданий конструктор? Приклад
У даному прикладі реалізована структура типу Date, в якій є конструктор, що ініціалізує поля структури значеннями.
struct Date { public int day; // число public int month; // місяць public int year; // рік public Date(int nday, int nmonth, int nyear) { day = nday; month = nmonth; year = nyear; } }
Далі наводиться приклад використання такого конструктору в обробнику події
private void button3_Click(object sender, EventArgs e) { Date d = new Date(2, 3, 2001); // викликати конструктор // вивід полів на форму label1.Text = d.day.ToString(); label2.Text = d.month.ToString(); label3.Text = d.year.ToString(); }
⇑
6. Приклад структури, що містить властивості
Щоб використати властивості в структурі, потрібно щоб екземпляр структури створювався з допомогою оператора new.
Нехай в деякому класі оголошено структуру, що описує точку на координатній площині. Структура має:
- дві внутрішні змінні x, y;
- метод SetXY(), що встановлює значення змінних x, y новими значеннями;
- дві властивості X, Y. Ці властивості забезпечують читання (get) і запис (set) внутрішніх змінних x, y.
// структура, що описує точку на координатній площині struct Point { int x, y; public void SetXY(int nx, int ny) { x = nx; y = ny; } // властивість X public int X { get { return x; } set { x = value; } } // властивість Y public int Y { get { return y; } set { y = value; } } }
Нижче наведено використання структури Point з програмного коду деякого методу класу.
// структура ініціалізується оператором new Point P = new Point(); // записати у змінні x, y значення 25, 30 з допомогою властивостей P.X = 25; P.Y = 30; int t; t = P.Y; // t = 30
Важливо тут, щоб екземпляр структури створювався з використанням оператора new.
⇑
Зв’язані теми
- Структури. Загальні поняття. Структурна змінна. Модифікатори доступу до структурної змінної. Приклади використання структур в програмі
- Використання масивів у структурах. Масиви структур. Вкладені структури. Копіювання структур
- Інтерфейси. Використання інтерфейсів у програмах на C#