Aby zmniejszyć nadmiarową kod, mam kilka metod rzut pomocnicze:Myśli o pomocników rzutów
protected static X ThrowInvalidOperation(string operation, X a, X b) {
throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());
}
Zastosowanie:
public static X operator +(X a, X b) {
if (...) {
return new X(...);
}
return ThrowInvalidOperation("+", a, b);
}
Problem: Ponieważ operator +
zawsze musi zwrócić wartość, ja Naprawiono to, zwracając wartość przez ThrowInvalidOperation
i wywołując ją za pomocą return
ThrowInvalidOperation("+", a, b);
Istnieje wiele wad - jednym z nich jest to, że nie mogę tego nazwać metodą zwracającą inny typ.
Chciałbym, aby istniał sposób oznaczania funkcji pomocnika "zawsze zgłasza wyjątek", aby kompilator przestał śledzić zwracane wartości.
P: Jakie mam możliwości, aby to zadziałało?
Czy rozważałeś utworzenie wyjątku w helperie, podczas gdy wrzucono go do implementacji operatora? Na przykład. 'throw NewInvalidOperationException (...);' – Caramiriel