此代码无效:
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编译时常量?
最佳答案
嗯... string optionalParm = ""又出了什么问题?为什么那么糟糕?在这种情况下,你真的认为你需要一个空字符串的符号常量吗?那这个怎么样?
const int Zero = 0;
void SomeMethod(int optional = Zero) { }
你觉得这很傻吗?
关于C# 4.0 - 如何处理可选的字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3606301/