Moq.Times参数默认值?如何创建结构常量,bc Moq.Times.Once() 不是编译时常量

Moq.Times parameter default value? how to create a struct constant, bc Moq.Times.Once() is not a compile time constant

我有一个类型为 Moq.Times 的参数,我希望它的默认值为 Moq.Times.Once() 除了 Once() 是一个方法而不是编译时间常量.

所以我将参数设置为可空并将默认值设置为空,然后在方法中,如果参数值为空,我将其设置为/调用 Moq.Times.Once() 就可以了,但我真正想做的是使用默认值 Moq.Times.Once()

有没有更聪明/更简单的方法来做到这一点?

我想要但没有编译的:

void MyMethod(Moq.Times invocationTimes = Moq.Time.Once()) { ... }

我做了什么:

void MyMethod(Moq.Times? invocationTimes = null) { if (invocationTimes == null) { invocationTimes = Times.Once(); }}

是的,您应该允许 null 然后在运行时替换它。

你可以让你的代码多一点concise with the null coalescing operator since C# 8:

void MyMethod(Moq.Times? invocationTimes = null) 
{ 
    invocationTimes ??= Times.Once(); 
    ...
}