【发布时间】:2011-04-06 02:22:23
【问题描述】:
此代码无效:
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.Empty 的优势。必须是 unicode 的东西,但我不必担心(至少现在还没有……哎呀)
-
我很困惑为什么你认为你需要这样做。我认为
nullString是一个令人困惑的名字,因为乍一看我倾向于认为它是null,而不是""。至于您的最后一个问题,请参阅 [ 为什么 String.Empty 不是常量? ](stackoverflow.com/questions/507923/…)。 @Dave,这里没有 Unicode 的东西。""很好;另请参阅 [ 在 C# 中,我应该使用 string.Empty 还是 String.Empty 还是“”? ](stackoverflow.com/questions/263191/…)。 -
@prateeksaluja20 - 标题/标签提到了什么???
-
@STW - 你为什么要删除我的编辑??
-
它没有添加到问题中 - 答案并没有攻击你,他们可能直言不讳,但你最初的问题并不完全中立。
标签: c# .net string c#-4.0 optional-parameters