Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Rakenteiden Konstruktorit | Rakenteet ja Enumeraattorit
C# Perusteiden Jälkeen

bookRakenteiden 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

index.cs

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

Seuraavat kohdat ovat tärkeitä konstruktorin syntaksissa:

  1. Konstruktorin nimi on sama kuin rakenteen nimi;
  2. Konstruktorilla ei ole palautusarvoa.

Seuraava ohjelma havainnollistaa, kuinka konstruktoria kutsutaan aina, kun olio luodaan:

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
Huomio

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

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(); } }

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

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(); } }

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

index.cs

copy
123456
public 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

index.cs

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

Varmistaaksesi, että kentät alustettiin onnistuneesti konstruktorissa, käytettiin displayValue-metodia:

index.cs

index.cs

copy
1
coord1.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ä.

question mark

Milloin rakentajia kutsutaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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

bookRakenteiden 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

index.cs

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

Seuraavat kohdat ovat tärkeitä konstruktorin syntaksissa:

  1. Konstruktorin nimi on sama kuin rakenteen nimi;
  2. Konstruktorilla ei ole palautusarvoa.

Seuraava ohjelma havainnollistaa, kuinka konstruktoria kutsutaan aina, kun olio luodaan:

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
Huomio

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

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(); } }

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

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(); } }

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

index.cs

copy
123456
public 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

index.cs

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

Varmistaaksesi, että kentät alustettiin onnistuneesti konstruktorissa, käytettiin displayValue-metodia:

index.cs

index.cs

copy
1
coord1.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ä.

question mark

Milloin rakentajia kutsutaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 8
some-alt