为了减少冗余代码,我有一些罚球的辅助方法:思考扔助手
protected static X ThrowInvalidOperation(string operation, X a, X b) {
throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());
}
用法:
public static X operator +(X a, X b) {
if (...) {
return new X(...);
}
return ThrowInvalidOperation("+", a, b);
}
问题:由于运营商+
必须返回一个值,我通过使ThrowInvalidOperation
返回一个值并将其与return
ThrowInvalidOperation("+", a, b);
有很多缺点 - 一个是因为我不能从返回不同类型的方法调用它。
我希望有一种方法可以标记助手函数“总是抛出异常”,因此编译器会停止跟踪返回值。
问:我有什么可能做这项工作?
你有没有考虑在助手中创建异常,同时将它抛入运算符实现?例如。 '抛出NewInvalidOperationException(...);' – Caramiriel