Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Klasseconstructors | Introductie tot Objectgeoriënteerd Programmeren (OOP)
C# Verder dan de Basis

bookKlasseconstructors

Een klasseconstructor is hetzelfde als een structconstructor. Het is een methode die wordt uitgevoerd wanneer een object wordt aangemaakt.

De syntaxis voor het aanmaken van een constructor is als volgt:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Bijvoorbeeld:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Uit de uitvoer blijkt dat de Console.WriteLine-instructie binnen de Player-constructor wordt uitgevoerd telkens wanneer een nieuw object wordt aangemaakt.

Note
Opmerking

In C# 9 en oudere versies van C# zijn er enkele verschillen tussen constructors van structs en klassen. In oudere versies kun je bijvoorbeeld geen parameterloze constructors voor structs maken, maar in C# 10 en nieuwere versies wordt dit wel ondersteund. Het wordt aanbevolen om de nieuwste versie van C#-compilers te gebruiken, anders kun je fouten tegenkomen bij het compileren van bepaalde code.

Hieronder volgt een voorbeeldcode uit het hoofdstuk Struct Constructors. De term static wordt uitgelegd in de opmerkingen, omdat deze hier relevanter is. Het is echter niet noodzakelijk om dit volledig te begrijpen, aangezien dit concept later in detail zal worden behandeld.

Note
Opmerking

In tegenstelling tot normale velden kan een static veld gegevens vasthouden, zelfs als er geen object van die klasse is. Statische velden hebben dezelfde waarde voor alle objecten, dus het wijzigen van de waarde van een statisch veld vanuit één object wijzigt deze voor alle objecten. De programmaklasse vertegenwoordigt het programma zelf, dus als het statische veld een lid is van de 'Program'-klasse, fungeert het als een globale variabele.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; 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(); } }

Om de Player-struct om te zetten naar een klasse, hoeft u alleen de term struct te vervangen door class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; 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(); } }

Op vergelijkbare wijze kunnen er ook constructors met argumenten worden gebruikt. Deze methode wordt doorgaans toegepast om de initialisatie van klassevelden te vereenvoudigen:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

Tot nu toe zijn de meeste basisconcepten van Classes behandeld. Afgaand op de syntaxis en het gedrag lijken Classes precies hetzelfde als Structs, maar dat is niet het geval. Zoals vermeld in het eerste hoofdstuk van deze sectie, zijn Structs een beperkte versie van Classes die alleen basisfunctionaliteit bieden, terwijl de mogelijkheden van Classes veel complexer en uitgebreider zijn. In deze sectie zijn alle functies behandeld die overeenkomen tussen Classes en Structs. In de volgende twee secties leer je alle details van classes en objectgeoriënteerd programmeren.

1. Wanneer wordt een constructor-methode aangeroepen?

2. Wat zal de naam zijn van een constructormethode in een klasse genaamd "Animal"?

3. Welke keyword wordt gebruikt vóór een constructornaam?

question mark

Wanneer wordt een constructor-methode aangeroepen?

Select the correct answer

question mark

Wat zal de naam zijn van een constructormethode in een klasse genaamd "Animal"?

Select the correct answer

question mark

Welke keyword wordt gebruikt vóór een constructornaam?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 9

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 2.04

bookKlasseconstructors

Veeg om het menu te tonen

Een klasseconstructor is hetzelfde als een structconstructor. Het is een methode die wordt uitgevoerd wanneer een object wordt aangemaakt.

De syntaxis voor het aanmaken van een constructor is als volgt:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Bijvoorbeeld:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Uit de uitvoer blijkt dat de Console.WriteLine-instructie binnen de Player-constructor wordt uitgevoerd telkens wanneer een nieuw object wordt aangemaakt.

Note
Opmerking

In C# 9 en oudere versies van C# zijn er enkele verschillen tussen constructors van structs en klassen. In oudere versies kun je bijvoorbeeld geen parameterloze constructors voor structs maken, maar in C# 10 en nieuwere versies wordt dit wel ondersteund. Het wordt aanbevolen om de nieuwste versie van C#-compilers te gebruiken, anders kun je fouten tegenkomen bij het compileren van bepaalde code.

Hieronder volgt een voorbeeldcode uit het hoofdstuk Struct Constructors. De term static wordt uitgelegd in de opmerkingen, omdat deze hier relevanter is. Het is echter niet noodzakelijk om dit volledig te begrijpen, aangezien dit concept later in detail zal worden behandeld.

Note
Opmerking

In tegenstelling tot normale velden kan een static veld gegevens vasthouden, zelfs als er geen object van die klasse is. Statische velden hebben dezelfde waarde voor alle objecten, dus het wijzigen van de waarde van een statisch veld vanuit één object wijzigt deze voor alle objecten. De programmaklasse vertegenwoordigt het programma zelf, dus als het statische veld een lid is van de 'Program'-klasse, fungeert het als een globale variabele.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; 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(); } }

Om de Player-struct om te zetten naar een klasse, hoeft u alleen de term struct te vervangen door class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; 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(); } }

Op vergelijkbare wijze kunnen er ook constructors met argumenten worden gebruikt. Deze methode wordt doorgaans toegepast om de initialisatie van klassevelden te vereenvoudigen:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

Tot nu toe zijn de meeste basisconcepten van Classes behandeld. Afgaand op de syntaxis en het gedrag lijken Classes precies hetzelfde als Structs, maar dat is niet het geval. Zoals vermeld in het eerste hoofdstuk van deze sectie, zijn Structs een beperkte versie van Classes die alleen basisfunctionaliteit bieden, terwijl de mogelijkheden van Classes veel complexer en uitgebreider zijn. In deze sectie zijn alle functies behandeld die overeenkomen tussen Classes en Structs. In de volgende twee secties leer je alle details van classes en objectgeoriënteerd programmeren.

1. Wanneer wordt een constructor-methode aangeroepen?

2. Wat zal de naam zijn van een constructormethode in een klasse genaamd "Animal"?

3. Welke keyword wordt gebruikt vóór een constructornaam?

question mark

Wanneer wordt een constructor-methode aangeroepen?

Select the correct answer

question mark

Wat zal de naam zijn van een constructormethode in een klasse genaamd "Animal"?

Select the correct answer

question mark

Welke keyword wordt gebruikt vóór een constructornaam?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 9
some-alt