Compilerfehler CS0686Compiler Error CS0686

Die Accessor „Accessor“ kann den Schnittstellenmember „Member“ für den Typ „Typ“ nicht implementieren.Accessor 'accessor' cannot implement interface member 'member' for type 'type'. Verwenden Sie eine explizite Schnittstellenimplementierung.Use an explicit interface implementation.

Empfohlen: Dieser Fehler kann beim Implementieren einer Schnittstelle auftreten, die Methodennamen enthält, die im Konflikt mit den automatisch generierten Methoden stehen, die mit einer Eigenschaft oder einem Ereignis verknüpft sind.Suggested: This error can occur when implementing an interface that contains method names which conflict with the auto-generated methods associated with a property or event. Die Get/Set-Methoden für Eigenschaften werden als „get_property“ und „set_property“ generiert, und die Methoden zum Hinzufügen und Entfernen von Ereignisse werden als „add_event“ und „remove_event“ generiert.The get/set methods for properties are generated as get_property and set_property, and the add/remove methods for events are generated as add_event and remove_event. Wenn eine Schnittstelle beide Methoden enthält, tritt ein Konflikt auf.If an interface contains either of these methods, a conflict occurs. Um diesen Fehler zu vermeiden, implementieren Sie die Methoden mit einer expliziten Schnittstellenimplementierung.To avoid this error, implement the methods using an explicit interface implementation. Geben Sie dazu die Funktion wie folgt an:To do this, specify the function as:

Interface.get_property() { /* */ }  
Interface.set_property() { /* */ }  

BeispielExample

Im folgenden Beispiel wird der Fehler CS0686 generiert:The following sample generates CS0686:

// CS0686.cs  
interface I  
{  
    int get_P();  
}  

class C : I  
{  
    public int P  
    {  
        get { return 1; }  // CS0686  
    }  
}  
// But the following is valid:  
class D : I  
{  
    int I.get_P() { return 1; }  
    public static void Main() {}  
}  

BeispielExample

Dieser Fehler kann auch beim Deklarieren von Ereignisse auftreten.This error can also occur when declaring events. Das Ereigniskonstrukt generiert die Methoden add_``event und remove_``event automatisch. Das kann zu einem Konflikt mit den gleichnamigen Methoden in einer Schnittstelle führen, wie im folgenden Beispiel dargestellt:The event construct automatically generates the add_``event and remove_``event methods, which could conflict with the methods of the same name in an interface, as in the following sample:

// CS0686b.cs  
using System;  

interface I  
{  
    void add_OnMyEvent(EventHandler e);  
}  

class C : I  
{  
    public event EventHandler OnMyEvent  
    {  
        add { }  // CS0686  
        remove { }  
    }  
}  

// Correct (using explicit interface implementation):  
class D : I  
{  
    void I.add_OnMyEvent(EventHandler e) {}  
    public static void Main() {}  
}