c#三元运算符不工作

本文关键字:运算符 工作 三元 | 更新日期: 2023-09-27 18:07:00

我有一个类的Moq模拟,我需要验证是否调用了某个方法。根据变量的类型,我需要检查该方法是否被调用过一次。

所以,这是有效的:

if (exception is ValidationException)
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Once);
else
    mockRequestHandler.Verify(x => x.HandleException(exception), 
    Times.Never);

我试图使用三元操作符如下,但它似乎不起作用:

mockRequestHandler.Verify(x => x.HandleException(exception),
    (exception is ValidationException) ? Times.Once: Times.Never);
我得到以下编译时错误:

无法确定条件表达式的类型,因为在'method group'和'method group'之间没有隐式转换。

是否有一些简单的我忽略了或者三元操作符不能以这种方式使用?

c#三元运算符不工作

正如我在这个源文件中看到的,Times.OnceTimes.Never实际上是静态方法,而不是属性。

为了验证该方法被调用一次或从未被调用,您需要这样使用它:

mockRequestHandler.Verify(x => x.HandleException(exception), Times.Once());
mockRequestHandler.Verify(x => x.HandleException(exception), Times.Never());
因此,使用三元操作符,它将是:
mockRequestHandler.Verify(x => x.HandleException(exception), 
    (exception is ValidationException) ? Times.Once() : Times.Never());