Struct Konstruktører
En konstruktør er en metode, der automatisk udføres, når et nyt objekt oprettes.
Syntaksen for en konstruktør ligner en metode, men du udelader blot returnType, da en konstruktør ikke returnerer nogen værdi:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Følgende punkter er vigtige at bemærke om konstruktørsyntaksen:
- Konstruktørens navn er det samme som strukturens navn;
- En konstruktør har ingen returværdi.
Følgende program demonstrerer, hvordan konstruktøren kaldes, hver gang et objekt oprettes:
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(); } }
Hvis du bruger en C#-version ældre end C# 10
, kan du få en kompileringstid-fejl. Det anbefales at bruge C# 10
eller en nyere version. Hvis du ikke ønsker at skifte til en nyere version, er det vigtigt at bemærke, at brugen af konstruktører vil være mere begrænset. For eksempel kan du ikke oprette en parameterløs konstruktør i ældre versioner.
Tilføj et felt til Player
kaldet id
, som vil være en unik identifikator for det objekt, så hvert objekt får en forskellig værdi for id
. Det starter fra 0
og øges. For at opnå dette skal du oprette en global variabel kaldet 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 ovenstående kode er structen placeret inde i Program
-klassen for at kunne få adgang til variablen 'totalPlayers' fra konstruktøren.
Du kan videregive data til en konstruktør, når du opretter et nyt objekt, ved at bruge følgende syntaks:
structureName variableName = new structureName(argument1, argument2, …);
Følgende er et praktisk eksempel på anvendelsen:
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(); } }
Lad os gennemgå koden trin for trin.
Først oprettede du en konstruktør, og inde i konstruktøren tildelte du de overførte værdier x
, y
, z
til felterne x
, y
og z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Inde i Main
-metoden oprettede du et nyt Coordinate3D
-objekt og sendte 3
, 5
og 7
som x
, y
og z
gennem konstruktøren.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
For at bekræfte om felterne blev initialiseret korrekt af konstruktøren, blev displayValue
-metoden anvendt:
index.cs
1coord1.displayValue();
Outputtet viste, at felterne blev opdateret korrekt.
Konstruktører er meget nyttige, når du ønsker at initialisere objekter med data eller udføre indledende operationer, når et objekt oprettes.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.04
Struct Konstruktører
Stryg for at vise menuen
En konstruktør er en metode, der automatisk udføres, når et nyt objekt oprettes.
Syntaksen for en konstruktør ligner en metode, men du udelader blot returnType, da en konstruktør ikke returnerer nogen værdi:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Følgende punkter er vigtige at bemærke om konstruktørsyntaksen:
- Konstruktørens navn er det samme som strukturens navn;
- En konstruktør har ingen returværdi.
Følgende program demonstrerer, hvordan konstruktøren kaldes, hver gang et objekt oprettes:
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(); } }
Hvis du bruger en C#-version ældre end C# 10
, kan du få en kompileringstid-fejl. Det anbefales at bruge C# 10
eller en nyere version. Hvis du ikke ønsker at skifte til en nyere version, er det vigtigt at bemærke, at brugen af konstruktører vil være mere begrænset. For eksempel kan du ikke oprette en parameterløs konstruktør i ældre versioner.
Tilføj et felt til Player
kaldet id
, som vil være en unik identifikator for det objekt, så hvert objekt får en forskellig værdi for id
. Det starter fra 0
og øges. For at opnå dette skal du oprette en global variabel kaldet 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 ovenstående kode er structen placeret inde i Program
-klassen for at kunne få adgang til variablen 'totalPlayers' fra konstruktøren.
Du kan videregive data til en konstruktør, når du opretter et nyt objekt, ved at bruge følgende syntaks:
structureName variableName = new structureName(argument1, argument2, …);
Følgende er et praktisk eksempel på anvendelsen:
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(); } }
Lad os gennemgå koden trin for trin.
Først oprettede du en konstruktør, og inde i konstruktøren tildelte du de overførte værdier x
, y
, z
til felterne x
, y
og z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Inde i Main
-metoden oprettede du et nyt Coordinate3D
-objekt og sendte 3
, 5
og 7
som x
, y
og z
gennem konstruktøren.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
For at bekræfte om felterne blev initialiseret korrekt af konstruktøren, blev displayValue
-metoden anvendt:
index.cs
1coord1.displayValue();
Outputtet viste, at felterne blev opdateret korrekt.
Konstruktører er meget nyttige, når du ønsker at initialisere objekter med data eller udføre indledende operationer, når et objekt oprettes.
Tak for dine kommentarer!