Konstruktører for Struct
En konstruktør er en metode som automatisk kjøres når et nytt objekt opprettes.
Syntaksen for en konstruktør ligner på en metode, men du utelater returnType siden en konstruktør ikke returnerer noen verdi:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Følgende punkter er viktige å merke seg om konstruktørsyntaksen:
- Konstruktørens navn er det samme som strukturens navn;
- En konstruktør har ingen returverdi.
Følgende program viser hvordan konstruktøren kalles hver gang et objekt opprettes:
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(); } }
Dersom du bruker en C#-versjon eldre enn C# 10
, kan du få en kompileringstid-feil. Det anbefales å bruke C# 10
eller en nyere versjon. Hvis du ikke ønsker å bytte til en nyere versjon, er det viktig å merke seg at bruken av konstruktører vil være mer begrenset. For eksempel kan du ikke opprette en parameterløs konstruktør i eldre versjoner.
Legg til et felt i Player
kalt id
, som skal være en unik identifikator for objektet slik at hvert objekt får en forskjellig verdi for id
. Den skal starte fra 0
og øke. For å oppnå dette må du opprette en global variabel kalt 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(); } }
I koden ovenfor plasserte du strukturen inne i Program
-klassen for å få tilgang til variabelen 'totalPlayers' fra konstruktøren.
Du kan sende data inn i en konstruktør når du oppretter et nytt objekt ved å bruke følgende syntaks:
structureName variableName = new structureName(argument1, argument2, …);
Følgende er et praktisk eksempel på bruk:
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(); } }
La oss gå gjennom koden steg for steg.
Først opprettet du en konstruktør, og inne i konstruktøren tildelte du de mottatte verdiene x
, y
, z
til feltene x
, y
og z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Inne i Main
-metoden opprettet du et nytt Coordinate3D
-objekt og sendte inn 3
, 5
og 7
som x
, y
og z
gjennom konstruktøren.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
For å bekrefte om feltene ble initiert av konstruktøren eller ikke, brukte du metoden displayValue
:
index.cs
1coord1.displayValue();
Utdataene viste at feltene ble oppdatert vellykket.
Konstruktører er svært nyttige når du ønsker å initialisere objekter med data, eller for å utføre noen innledende operasjoner når et objekt opprettes.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Awesome!
Completion rate improved to 2.04
Konstruktører for Struct
Sveip for å vise menyen
En konstruktør er en metode som automatisk kjøres når et nytt objekt opprettes.
Syntaksen for en konstruktør ligner på en metode, men du utelater returnType siden en konstruktør ikke returnerer noen verdi:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Følgende punkter er viktige å merke seg om konstruktørsyntaksen:
- Konstruktørens navn er det samme som strukturens navn;
- En konstruktør har ingen returverdi.
Følgende program viser hvordan konstruktøren kalles hver gang et objekt opprettes:
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(); } }
Dersom du bruker en C#-versjon eldre enn C# 10
, kan du få en kompileringstid-feil. Det anbefales å bruke C# 10
eller en nyere versjon. Hvis du ikke ønsker å bytte til en nyere versjon, er det viktig å merke seg at bruken av konstruktører vil være mer begrenset. For eksempel kan du ikke opprette en parameterløs konstruktør i eldre versjoner.
Legg til et felt i Player
kalt id
, som skal være en unik identifikator for objektet slik at hvert objekt får en forskjellig verdi for id
. Den skal starte fra 0
og øke. For å oppnå dette må du opprette en global variabel kalt 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(); } }
I koden ovenfor plasserte du strukturen inne i Program
-klassen for å få tilgang til variabelen 'totalPlayers' fra konstruktøren.
Du kan sende data inn i en konstruktør når du oppretter et nytt objekt ved å bruke følgende syntaks:
structureName variableName = new structureName(argument1, argument2, …);
Følgende er et praktisk eksempel på bruk:
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(); } }
La oss gå gjennom koden steg for steg.
Først opprettet du en konstruktør, og inne i konstruktøren tildelte du de mottatte verdiene x
, y
, z
til feltene x
, y
og z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Inne i Main
-metoden opprettet du et nytt Coordinate3D
-objekt og sendte inn 3
, 5
og 7
som x
, y
og z
gjennom konstruktøren.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
For å bekrefte om feltene ble initiert av konstruktøren eller ikke, brukte du metoden displayValue
:
index.cs
1coord1.displayValue();
Utdataene viste at feltene ble oppdatert vellykket.
Konstruktører er svært nyttige når du ønsker å initialisere objekter med data, eller for å utføre noen innledende operasjoner når et objekt opprettes.
Takk for tilbakemeldingene dine!