Implizite und explizite Implementierung von Interfaces in C#: Wann und welche verwenden?
Hallo zusammen! Ich habe gerade angefangen, C# zu lernen, und bin auf das Thema Interfaces gestoßen. An sich ist alles klar: Ein Interface ist ein Vertrag, eine Klasse implementiert ihn. Aber dann habe ich gesehen, dass Interfaces auf zwei Arten implementiert werden können: implizit (implicit) und explizit (explicit). Und ich bin verwirrt.
Hier ist ein Beispiel:
public interface IWorker
{
void Work();
}
public class Employee : IWorker
{
// Implizite Implementierung
public void Work()
{
Console.WriteLine("Employee works");
}
}
Das funktioniert. Aber ich habe gelesen, dass man es auch so machen kann:
public class Manager : IWorker
{
// Explizite Implementierung
void IWorker.Work()
{
Console.WriteLine("Manager works");
}
}
Und jetzt, wenn ich schreibe:
Manager m = new Manager();
m.Work(); // Compiler-Fehler!
Das wird nicht kompiliert! Wozu braucht man dann die explizite Implementierung? Wann soll man sie anwenden? Und was ist überhaupt der Unterschied, abgesehen von der Syntax? Ich wäre dankbar für eine ausführliche Erklärung.