Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Struct Konstruktører | Strukturer og Enumeratorer
C# Ud Over Det Grundlæggende

bookStruct 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

index.cs

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

Følgende punkter er vigtige at bemærke om konstruktørsyntaksen:

  1. Konstruktørens navn er det samme som strukturens navn;
  2. En konstruktør har ingen returværdi.

Følgende program demonstrerer, hvordan konstruktøren kaldes, hver gang et objekt oprettes:

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
Bemærk

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

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

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

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

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

index.cs

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

index.cs

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

For at bekræfte om felterne blev initialiseret korrekt af konstruktøren, blev displayValue-metoden anvendt:

index.cs

index.cs

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

question mark

Hvornår kaldes konstruktører?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

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

bookStruct 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

index.cs

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

Følgende punkter er vigtige at bemærke om konstruktørsyntaksen:

  1. Konstruktørens navn er det samme som strukturens navn;
  2. En konstruktør har ingen returværdi.

Følgende program demonstrerer, hvordan konstruktøren kaldes, hver gang et objekt oprettes:

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
Bemærk

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

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

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

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

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

index.cs

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

index.cs

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

For at bekræfte om felterne blev initialiseret korrekt af konstruktøren, blev displayValue-metoden anvendt:

index.cs

index.cs

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

question mark

Hvornår kaldes konstruktører?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 8
some-alt