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

bookKonstruktø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

index.cs

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

Følgende punkter er viktige å merke seg om konstruktørsyntaksen:

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

Følgende program viser hvordan konstruktøren kalles hver gang et objekt opprettes:

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
Merk

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

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 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

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

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

index.cs

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

index.cs

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

For å bekrefte om feltene ble initiert av konstruktøren eller ikke, brukte du metoden displayValue:

index.cs

index.cs

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

question mark

Når kalles konstruktører?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 8

Spør AI

expand

Spør AI

ChatGPT

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

bookKonstruktø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

index.cs

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

Følgende punkter er viktige å merke seg om konstruktørsyntaksen:

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

Følgende program viser hvordan konstruktøren kalles hver gang et objekt opprettes:

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
Merk

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

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 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

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

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

index.cs

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

index.cs

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

For å bekrefte om feltene ble initiert av konstruktøren eller ikke, brukte du metoden displayValue:

index.cs

index.cs

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

question mark

Når kalles konstruktører?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 8
some-alt