redundanten Code zu reduzieren, habe ich einige Methoden throw Helfer:Gedanken zu werfen Helfer
protected static X ThrowInvalidOperation(string operation, X a, X b) {
throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());
}
Verbrauch:
public static X operator +(X a, X b) {
if (...) {
return new X(...);
}
return ThrowInvalidOperation("+", a, b);
}
Problem: Da der Betreiber +
muss immer einen Wert zurückgeben, ich behebt dies, indem ThrowInvalidOperation
einen Wert zurückgibt und es mit return
ThrowInvalidOperation("+", a, b);
Es gibt viele Nachteile - eine ist, weil ich es nicht von einer Methode aufrufen kann, die einen anderen Typ zurückgibt.
Ich wünschte, es gibt dort eine Möglichkeit, die Hilfsfunktion zu markieren "wirft immer eine Ausnahme", so dass der Compiler die Rückgabewerte nicht mehr verfolgt.
Frage: Welche Möglichkeiten habe ich, damit dies funktioniert?
Haben Sie in Betracht gezogen, die Exception im Helper zu erstellen, während Sie sie in die Operatorimplementierung werfen? Z.B. 'throw NewInvalidOperationException (...);' – Caramiriel