关于C#:为什么我不能使用string.empty作为可选参数,而不是空引号?

Why can't I use string.Empty as an optional parameter contrary to empty quotation marks?

本问题已经有最佳答案,请猛点这里访问。

我正在修改我的代码,注意到在某些地方我有一些可选参数,其默认值为空字符串。我把它从空字符串的类更改为默认值,猜猜看!显然,空引号和string.Empty之间存在差异。鸭子是什么?!(拼写错误)

1
2
3
private void Khaboom(String parameter ="") { ... }

private void Bazinga(String parameter = String.Empty) { ... }

有人能给我解释一下为什么鸭子在江户不工作的时候,江户不工作吗?!

错误消息提示:

Default parameter value for 'parameter' must be a compile-time constant.

好。。。它是!


Empty定义如下:

1
public static readonly string Empty

它不是一个常数。它是一个只读字段。


A default value must be one of the following types of expressions:

  • a constant expression;
  • an expression of the form new ValType(), where ValType is a value type, such as an enum or a struct;
  • an expression of the form default(ValType), where ValType is a value type.

因为string.Empty两者都不是,所以是不允许的。

http://msdn.microsoft.com/en-us/library/dd264739.aspx


默认参数值必须是常量,但string.empty是只读字段。