Rakenteiden Konstruktorit
Konstruktori on metodi, joka suoritetaan automaattisesti, kun uusi olio luodaan.
Konstruktorin syntaksi muistuttaa hieman metodin syntaksia, mutta jätät pois returnType-määreen, koska konstruktori ei palauta arvoa:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Seuraavat kohdat ovat tärkeitä konstruktorin syntaksissa:
- Konstruktorin nimi on sama kuin rakenteen nimi;
- Konstruktorilla ei ole palautusarvoa.
Seuraava ohjelma havainnollistaa, kuinka konstruktoria kutsutaan aina, kun olio luodaan:
index.cs
12345678910111213141516171819using 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(); } }
Jos käytät C#:n versiota, joka on vanhempi kuin C# 10
, saatat kohdata käännösaikaisen virheen. Suositeltavaa on käyttää C# 10
:tä tai uudempaa versiota. Jos et halua siirtyä uudempaan versioon, on tärkeää huomioida, että konstruktorien käyttö on rajoitetumpaa. Esimerkiksi parametrillista konstruktoria ei voi luoda vanhemmissa versioissa.
Lisätään Player
-rakenteeseen kenttä nimeltä id
, joka toimii kyseisen olion yksilöllisenä tunnisteena, jolloin jokaisella oliolla on eri arvo id
:lle. Se alkaa arvosta 0
ja kasvaa. Tämän saavuttamiseksi sinun tulee luoda globaali muuttuja nimeltä totalPlayers
.
index.cs
12345678910111213141516171819202122232425262728using 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(); } }
Yllä olevassa koodissa sijoitit rakenteen (struct) Program
-luokan sisälle, jotta voit käyttää 'totalPlayers'-muuttujaa konstruktorin sisällä.
Voit välittää tietoa konstruktorille uuden olion luomisen yhteydessä seuraavalla syntaksilla:
structureName variableName = new structureName(argument1, argument2, …);
Alla on käytännön esimerkki käytöstä:
index.cs
1234567891011121314151617181920212223242526272829using 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(); } }
Tarkastellaan koodia vaihe vaiheelta.
Ensiksi loit konstruktorin ja konstruktorin sisällä annoit välitetyt arvot x
, y
, z
kentille x
, y
ja z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Main
-metodin sisällä loit uuden Coordinate3D
-olion ja annoit konstruktorin kautta arvot 3
, 5
ja 7
kentille x
, y
ja z
.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Varmistaaksesi, että kentät alustettiin onnistuneesti konstruktorissa, käytettiin displayValue
-metodia:
index.cs
1coord1.displayValue();
Tuloste osoitti, että kentät päivitettiin onnistuneesti.
Rakentajat ovat erittäin hyödyllisiä, kun halutaan alustaa olioita tietyillä tiedoilla tai suorittaa joitakin alkuoperaatioita olion luomisen yhteydessä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Rakenteiden Konstruktorit
Pyyhkäise näyttääksesi valikon
Konstruktori on metodi, joka suoritetaan automaattisesti, kun uusi olio luodaan.
Konstruktorin syntaksi muistuttaa hieman metodin syntaksia, mutta jätät pois returnType-määreen, koska konstruktori ei palauta arvoa:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Seuraavat kohdat ovat tärkeitä konstruktorin syntaksissa:
- Konstruktorin nimi on sama kuin rakenteen nimi;
- Konstruktorilla ei ole palautusarvoa.
Seuraava ohjelma havainnollistaa, kuinka konstruktoria kutsutaan aina, kun olio luodaan:
index.cs
12345678910111213141516171819using 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(); } }
Jos käytät C#:n versiota, joka on vanhempi kuin C# 10
, saatat kohdata käännösaikaisen virheen. Suositeltavaa on käyttää C# 10
:tä tai uudempaa versiota. Jos et halua siirtyä uudempaan versioon, on tärkeää huomioida, että konstruktorien käyttö on rajoitetumpaa. Esimerkiksi parametrillista konstruktoria ei voi luoda vanhemmissa versioissa.
Lisätään Player
-rakenteeseen kenttä nimeltä id
, joka toimii kyseisen olion yksilöllisenä tunnisteena, jolloin jokaisella oliolla on eri arvo id
:lle. Se alkaa arvosta 0
ja kasvaa. Tämän saavuttamiseksi sinun tulee luoda globaali muuttuja nimeltä totalPlayers
.
index.cs
12345678910111213141516171819202122232425262728using 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(); } }
Yllä olevassa koodissa sijoitit rakenteen (struct) Program
-luokan sisälle, jotta voit käyttää 'totalPlayers'-muuttujaa konstruktorin sisällä.
Voit välittää tietoa konstruktorille uuden olion luomisen yhteydessä seuraavalla syntaksilla:
structureName variableName = new structureName(argument1, argument2, …);
Alla on käytännön esimerkki käytöstä:
index.cs
1234567891011121314151617181920212223242526272829using 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(); } }
Tarkastellaan koodia vaihe vaiheelta.
Ensiksi loit konstruktorin ja konstruktorin sisällä annoit välitetyt arvot x
, y
, z
kentille x
, y
ja z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Main
-metodin sisällä loit uuden Coordinate3D
-olion ja annoit konstruktorin kautta arvot 3
, 5
ja 7
kentille x
, y
ja z
.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Varmistaaksesi, että kentät alustettiin onnistuneesti konstruktorissa, käytettiin displayValue
-metodia:
index.cs
1coord1.displayValue();
Tuloste osoitti, että kentät päivitettiin onnistuneesti.
Rakentajat ovat erittäin hyödyllisiä, kun halutaan alustaa olioita tietyillä tiedoilla tai suorittaa joitakin alkuoperaatioita olion luomisen yhteydessä.
Kiitos palautteestasi!