Why can't I use string.Empty as an optional parameter contrary to empty quotation marks?
本问题已经有最佳答案,请猛点这里访问。
我正在修改我的代码,注意到在某些地方我有一些可选参数,其默认值为空字符串。我把它从空字符串的类更改为默认值,猜猜看!显然,空引号和
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.
好。。。它是!
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.
因为
http://msdn.microsoft.com/en-us/library/dd264739.aspx
默认参数值必须是常量,但string.empty是只读字段。