Hier ist die Geschichte. Ich habe eine Schnittstelle erstellt, IVehicle
. Ich habe die Schnittstelle in meiner Klasse Vehicle.cs
explizit implementiert.Warum kann ich keine Methoden innerhalb einer Klasse aufrufen, die explizit eine Schnittstelle implementiert?
Hier ist meine Schnittstelle:
Interface IVehicle
{
int getWheel();
}
hier ist meine Klasse:
class Vehicle: IVehicle
{
public int IVehicle.getWheel()
{
return wheel;
}
public void printWheel()
{
Console.WriteLine(getWheel());
}
}
Beachten Sie, dass getWheel()
explizit umgesetzt. Wenn ich nun versuche, diese Methode innerhalb meiner Fahrzeugklasse aufzurufen, erhalte ich einen Fehler, der anzeigt, dass getWheel()
im aktuellen Kontext nicht existiert. Kann mir jemand helfen zu verstehen, was ich falsch mache?
als Java Person mit rufen schaffen könnte, frage ich mich, warum diese gefaltete Sache existiert? Warum sollte jemand das Obenstehende existieren lassen? Welchen Vorteil hat es? –
Das Angeben eines Sichtbarkeitsmodifizierers für ein explizit implementiertes Element ist ein Syntaxfehler. Auf das Mitglied kann immer zugegriffen werden, sobald das Objekt für Ihren Schnittstellentyp bestimmt wurde. – Trillian
@mP Wenn Sie mehrere Schnittstellen mit einem gemeinsamen Member implementieren, können Sie verschiedene Definitionen für jede Schnittstelle angeben. Es wird auch hinzugefügt, um Intellisense zu bereinigen, da die expliziten Elemente nicht sichtbar oder verwendbar sind, es sei denn, Sie werden in die richtige Schnittstelle umgewandelt. –