问题描述
我有一个 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();
...
}