此代码无效:
private void Foo(string optionalString = string.Empty)
{
// do foo.
}
但是这段代码是:
private void Foo(string optionalString = "")
{
// do foo.
}
为什么?因为 string.Empty 是只读字段,而不是常量,并且可选参数的默认值必须是编译时常量。
所以,关于我的问题......(嗯,关注)
这是我必须做的:
private const string emptyString = "";
private void Foo(string optionalString = emptyString)
{
// do foo.
if (!string.IsNullOrEmpty(optionalString))
// etc
}
你们如何处理可选的字符串参数?
为什么他们不能使String.Empty成为编译时常量?