【发布时间】:2019-08-25 06:54:01
【问题描述】:
在 C# 中,我们可以提供参数的默认值,如下所示:
void Foo(int i = 0) {}
但是当我们传递Type的默认参数时:
void FooWithTypeParam(Type eType = typeof(double)) {}
导致
Error CS1736 Default parameter value for 'eType' must be a compile-time constant
我发现here 可以使用空值来提供内部默认值。
目前的解决方案是:
void FooWithTypeParam(Type eType = null)
{
eType = eType ?? typeof(decimal);
}
但是用户看不到默认值是什么! 请问您有什么建议吗?
【问题讨论】:
-
目前还不清楚您想要什么样的建议,恐怕。您不能使用非空
Type引用作为默认值,因为它不能是编译时间常数。您需要决定是否要 a) 完全没有默认值; b)使用重载来伪造默认值; c) 使用 null 作为默认值并记录其含义。 -
两种方法(一种带参数,一种不带参数)——都带有适当的 XML 文档——可能是你最好的选择。
标签: c# c#-4.0 parameters