Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Methode-Overbelasting | OOP Essentials
C# Verder dan de Basis

bookMethode-Overbelasting

Methode-overloading in C# maakt het mogelijk om meerdere methoden met dezelfde naam in een klasse te definiëren, waarbij elke methode verschilt in het type parameters, het aantal parameters, of beide. Dit biedt een overzichtelijkere en flexibelere manier om verschillende invoerscenario's te verwerken.

Bijvoorbeeld, het is mogelijk om twee methoden met dezelfde naam te hebben maar met een verschillend aantal parameters:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

In de bovenstaande code is de methode sum overbelast om twee variaties van parameters te hebben. Een methode kan ook verschillende returntypes hebben voor verschillende variaties van zichzelf, maar het is belangrijk dat er geen ambiguïteit ontstaat. Anders zal de compiler een foutmelding geven, omdat de primaire manier voor een compiler om onderscheid te maken tussen twee methoden met dezelfde naam hun parameterlijst is.

Bijvoorbeeld:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

De bovenstaande code is onjuist omdat de parameters exact hetzelfde zijn als die van de oorspronkelijke methode, terwijl het returntype verschilt. Dit is niet toegestaan, omdat het voor de compiler (of zelfs voor mensen) onmogelijk wordt om te bepalen welke methode uitgevoerd moet worden wanneer deze wordt aangeroepen:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Daarom moet bij het overloaden van een methode een methode met een ander retourtype ook een andere set parameters hebben om deze onderscheidend te maken en ambiguïteit te voorkomen. Het volgende is ook onjuist:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Dit komt doordat de namen van parameters niet van belang zijn, maar hun types wel. De volgende overload-situaties zijn geldig:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. Hoe maakt de compiler onderscheid tussen overladen methoden?

2. Welke van de volgende is een geldig voorbeeld van method overloading?

question mark

Hoe maakt de compiler onderscheid tussen overladen methoden?

Select the correct answer

question mark

Welke van de volgende is een geldig voorbeeld van method overloading?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 7

Vraag AI

expand

Vraag AI

ChatGPT

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

Suggested prompts:

Can you give more examples of valid method overloading in C#?

What are some common mistakes to avoid when overloading methods?

Can you explain how method overloading differs from method overriding?

Awesome!

Completion rate improved to 2.04

bookMethode-Overbelasting

Veeg om het menu te tonen

Methode-overloading in C# maakt het mogelijk om meerdere methoden met dezelfde naam in een klasse te definiëren, waarbij elke methode verschilt in het type parameters, het aantal parameters, of beide. Dit biedt een overzichtelijkere en flexibelere manier om verschillende invoerscenario's te verwerken.

Bijvoorbeeld, het is mogelijk om twee methoden met dezelfde naam te hebben maar met een verschillend aantal parameters:

index.cs

index.cs

copy
12345678910111213141516171819
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static int sum(int a, int b, int c) { return a + b + c; } static void Main() { Console.WriteLine(sum(5, 7)); Console.WriteLine(sum(5, 7, 9)); } }

In de bovenstaande code is de methode sum overbelast om twee variaties van parameters te hebben. Een methode kan ook verschillende returntypes hebben voor verschillende variaties van zichzelf, maar het is belangrijk dat er geen ambiguïteit ontstaat. Anders zal de compiler een foutmelding geven, omdat de primaire manier voor een compiler om onderscheid te maken tussen twee methoden met dezelfde naam hun parameterlijst is.

Bijvoorbeeld:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int a, int b) { return a + b; }

De bovenstaande code is onjuist omdat de parameters exact hetzelfde zijn als die van de oorspronkelijke methode, terwijl het returntype verschilt. Dit is niet toegestaan, omdat het voor de compiler (of zelfs voor mensen) onmogelijk wordt om te bepalen welke methode uitgevoerd moet worden wanneer deze wordt aangeroepen:

index.cs

index.cs

copy
123
sum(1, 3); // Should it execute `int sum(int a, int b)` or `long sum(int a, int b)` ? // It is impossible to reach a good answer for the compiler in this case so it shows an error

Daarom moet bij het overloaden van een methode een methode met een ander retourtype ook een andere set parameters hebben om deze onderscheidend te maken en ambiguïteit te voorkomen. Het volgende is ook onjuist:

index.cs

index.cs

copy
12345678910
static int sum(int a, int b) { return a + b; } // This is wrong and will show an error static long sum(int first, int second) { return first + second; }

Dit komt doordat de namen van parameters niet van belang zijn, maar hun types wel. De volgende overload-situaties zijn geldig:

index.cs

index.cs

copy
1234567891011121314151617181920212223242526
using System; class ConsoleApp { static int sum(int a, int b) { return a + b; } static long sum(long a, long b) { return a + b; } static string sum(int a, long b, float c) { return Convert.ToString(a + b + c); } static void Main() { Console.WriteLine(sum(5, 7)); // Calls 'int sum()' Console.WriteLine(sum(500000000000, 700000000000)); // Calls 'long sum()' Console.WriteLine(sum(5, 7, 9)); // Calls 'string sum()' } }

1. Hoe maakt de compiler onderscheid tussen overladen methoden?

2. Welke van de volgende is een geldig voorbeeld van method overloading?

question mark

Hoe maakt de compiler onderscheid tussen overladen methoden?

Select the correct answer

question mark

Welke van de volgende is een geldig voorbeeld van method overloading?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 7
some-alt