Зміст курсу
C# Beyond Basics
C# Beyond Basics
Struct Constructors
A constructor is a method which is automatically executed when a new object is created.
The syntax of a constructor is somewhat similar to that of a method, we simply omit the returnType as a constructor doesn't return any value:
index
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
The following points are important to note about the constructor syntax:
- The constructor name is the same as the structure name.
- A constructor does not have any return value.
The following program demonstrates how the constructor is called whenever an object is created:
index
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(); } }
Let's add a field to Player
called id
which will be a unique identifier of that object so each object will have a different value for id
. It will start from 0
and will increment. To achieve that we will create a global variable called totalPlayers
.
index
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(); } }
In the above code, we placed the struct inside the Program
class to be able to access the 'totalPlayers' variable from inside the constructor.
We can pass data into a constructor when creating a new object using the following syntax:
Following is a practical example of the usage:
index
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(); } }
Let's look at the code step by step.
First, we created a constructor and inside the constructor we assigned the passed values x
, y
, z
to the fields x
, y
and z
:
index
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Inside the Main
method, we created a new Coordinate3D
object and passed 3
, 5
, and 7
as x
, y
and z
through the constructor.
index
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
To confirm whether the fields were successfully initiated by the constructor or not, we used the displayValue
method:
index
coord1.displayValue();
The output proved that the fields were successfully updated.
The constructors are very useful when we want to initiate objects with some data or for performing some initial operations when an object is created.
Дякуємо за ваш відгук!