Bitte helfen Sie mir zu verstehen, warum C# nicht erlaubt eine tatsächliche Klasse einen Operator haben oder was ich in der Definition meiner Klasse tun könnte.C# operator definition nur für die abstrakte Klasse verfügbar
Der Aufruf zum Erstellen eines Errd funktioniert, weil es eine abstrakte Klasse ist. Aber können Sie/warum können Sie nicht auch einen Operator in einer tatsächlichen Klasse wie in der gemerkten Version meiner Errd-Definition haben?
Gibt es etwas in der gemerkten Version von Errd, die ich beheben könnte, um die Errd errd = eq;
Arbeit zu machen?
Ich denke, ich sollte den IDE-Fehler hinzufügen. Wenn Errd nicht als abstrakter der IDE becrys definiert "
kann nicht implizit Gl Errd konvertieren. Eine explizite Konvertierung vorhanden ist. Vermissen Sie einen Guss?)
aber eine Gleichung ist nichts wie ein Errd für eine Besetzung würde keinen Sinn machen.
Eq eq = new Eq();
Copa copa = new Copa(eq);
Errd errd = eq;
public class Copa {
public Copa(Eq e) {
//.. do something
}
}
public class Erd : Errd { .... }
public adstract class Errd {
public static implicit operator(Eq e) {
Erd q = new Erd();
//.. do something
return q;
}
}
/*
public class Errd {
public static implicit operator(Eq e) {
Errd q = new Errd();
//.. do something
return q;
}
}
*/
Vielen Dank für Ihre Antwort rücksichtsvoll.
Weil Sie zwei Typen mit genau demselben Namen haben ('Errd' und' Errd') ?? Wenn das nicht der Fall ist, dann aktualisieren Sie Ihren Code, da es wirklich schwer ist, zu sehen, was Sie mit dem oben genannten erreichen wollen, zumindest sollten Sie es kompilieren. Auch wenn Sie einen Fehler oder eine Ausnahme erhalten, wäre es hilfreich, wenn Sie diese Informationen enthalten. – Igor
Die zweite Definition von Errd ist auskommentiert. – Steve
Bitte fügen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bei. Bitte lesen Sie auch [Wie stelle ich eine gute Frage] (http://stackoverflow.com/help/how-to-ask). Siehe auch Abschnitt [Operator überschreiben ==] (https://msdn.microsoft.com/ru-ru/library/ms173147 (v = vs.80) .aspx) und stellen Sie sicher, dass Ihre Syntax korrekt ist (ist es nicht). – Igor