Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Конструктори Структур | Структури Та Перелічення
C# Понад Базовий Рівень

bookКонструктори Структур

Конструктор — це метод, який автоматично виконується під час створення нового об'єкта.

Синтаксис конструктора подібний до синтаксису методу, але ви просто опускаєте returnType, оскільки конструктор не повертає жодного значення:

index.cs

index.cs

copy
1234567891011
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }

Важливі моменти щодо синтаксису конструктора:

  1. Ім'я конструктора збігається з іменем структури;
  2. Конструктор не має жодного значення, що повертається.

Наступна програма демонструє, як конструктор викликається щоразу при створенні об'єкта:

index.cs

index.cs

copy
12345678910111213141516171819
using System; struct Player { public Player() { Console.WriteLine($"New Player Object Created"); } } class Program { static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Note
Примітка

У разі використання версії C# старішої за C# 10, може виникнути помилка компіляції. Рекомендується використовувати C# 10 або новішу версію. Якщо ви не бажаєте переходити на новішу версію, важливо врахувати, що використання конструкторів буде більш обмеженим. Наприклад, у старіших версіях не можна створити конструктор без параметрів.

Додайте до Player поле id, яке буде унікальним ідентифікатором цього об'єкта, щоб кожен об'єкт мав різне значення id. Значення починатиметься з 0 і буде збільшуватися. Для цього потрібно створити глобальну змінну з назвою totalPlayers.

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class ConsoleApp { // We use the term 'static' when declaring variables directly under class // This will be explained in much more detail in later sections. public static int totalPlayers = 0; // This time we create put the struct inside the `ConsoleApp` class // This is to be able to use the `totalPlayers` variable easily. struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

У наведеному вище коді структура розміщена всередині класу Program, щоб мати змогу отримати доступ до змінної 'totalPlayers' з конструктора.

Дані можна передати у конструктор під час створення нового об'єкта за допомогою наступного синтаксису:

structureName variableName = new structureName(argument1, argument2, …);

Нижче наведено практичний приклад використання:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate3D { public double x; public double y; public double z; public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public void displayValue() { Console.WriteLine($"{this.x}, {this.y}, {this.z}"); } } class ConsoleApp { static void Main(string[] args) { Coordinate3D coord1 = new Coordinate3D(3, 5, 7); coord1.displayValue(); } }

Розгляньмо код крок за кроком.

Спочатку створено конструктор, у якому передані значення x, y, z присвоюються відповідним полям x, y та z:

index.cs

index.cs

copy
123456
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }

У методі Main створено новий об'єкт Coordinate3D і через конструктор передано значення 3, 5 та 7 як x, y і z.

index.cs

index.cs

copy
1
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);

Щоб перевірити, чи були поля успішно ініціалізовані конструктором, використовується метод displayValue:

index.cs

index.cs

copy
1
coord1.displayValue();

Вивід підтвердив, що поля були успішно оновлені.

Конструктори дуже корисні, коли потрібно ініціалізувати об'єкти з певними даними або виконати початкові операції під час створення об'єкта.

question mark

Коли викликаються конструктори?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 8

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain more about how constructors work in different programming languages?

What happens if I don't define a constructor in my structure or class?

Can you show an example of using multiple constructors with different parameters?

Awesome!

Completion rate improved to 2.04

bookКонструктори Структур

Свайпніть щоб показати меню

Конструктор — це метод, який автоматично виконується під час створення нового об'єкта.

Синтаксис конструктора подібний до синтаксису методу, але ви просто опускаєте returnType, оскільки конструктор не повертає жодного значення:

index.cs

index.cs

copy
1234567891011
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }

Важливі моменти щодо синтаксису конструктора:

  1. Ім'я конструктора збігається з іменем структури;
  2. Конструктор не має жодного значення, що повертається.

Наступна програма демонструє, як конструктор викликається щоразу при створенні об'єкта:

index.cs

index.cs

copy
12345678910111213141516171819
using System; struct Player { public Player() { Console.WriteLine($"New Player Object Created"); } } class Program { static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Note
Примітка

У разі використання версії C# старішої за C# 10, може виникнути помилка компіляції. Рекомендується використовувати C# 10 або новішу версію. Якщо ви не бажаєте переходити на новішу версію, важливо врахувати, що використання конструкторів буде більш обмеженим. Наприклад, у старіших версіях не можна створити конструктор без параметрів.

Додайте до Player поле id, яке буде унікальним ідентифікатором цього об'єкта, щоб кожен об'єкт мав різне значення id. Значення починатиметься з 0 і буде збільшуватися. Для цього потрібно створити глобальну змінну з назвою totalPlayers.

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class ConsoleApp { // We use the term 'static' when declaring variables directly under class // This will be explained in much more detail in later sections. public static int totalPlayers = 0; // This time we create put the struct inside the `ConsoleApp` class // This is to be able to use the `totalPlayers` variable easily. struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

У наведеному вище коді структура розміщена всередині класу Program, щоб мати змогу отримати доступ до змінної 'totalPlayers' з конструктора.

Дані можна передати у конструктор під час створення нового об'єкта за допомогою наступного синтаксису:

structureName variableName = new structureName(argument1, argument2, …);

Нижче наведено практичний приклад використання:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829
using System; struct Coordinate3D { public double x; public double y; public double z; public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public void displayValue() { Console.WriteLine($"{this.x}, {this.y}, {this.z}"); } } class ConsoleApp { static void Main(string[] args) { Coordinate3D coord1 = new Coordinate3D(3, 5, 7); coord1.displayValue(); } }

Розгляньмо код крок за кроком.

Спочатку створено конструктор, у якому передані значення x, y, z присвоюються відповідним полям x, y та z:

index.cs

index.cs

copy
123456
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }

У методі Main створено новий об'єкт Coordinate3D і через конструктор передано значення 3, 5 та 7 як x, y і z.

index.cs

index.cs

copy
1
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);

Щоб перевірити, чи були поля успішно ініціалізовані конструктором, використовується метод displayValue:

index.cs

index.cs

copy
1
coord1.displayValue();

Вивід підтвердив, що поля були успішно оновлені.

Конструктори дуже корисні, коли потрібно ініціалізувати об'єкти з певними даними або виконати початкові операції під час створення об'єкта.

question mark

Коли викликаються конструктори?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 8
some-alt