今天我在构造函数中创建默认参数值。
public SomeClass (String something = String.Empty)
{
// ...
}
编译器抱怨道。
“something”的默认参数值必须是编译时的
持续的。
我的印象是 String 类上的 Empty 是一个编译时常量。
.field public static initonly string Empty
我是否误解了编译时常量的含义,或者我需要接受它只是更古怪?
接受的答案this https://stackoverflow.com/questions/507923/why-isnt-string-empty-a-constant那么问题为什么 String.Empty 不是常量? is:
使用 static readonly 而不是 const 的原因是与非托管代码一起使用,如 Microsoft 在共享源公共语言基础结构 2.0 版本中所示。要查看的文件是 sscli20\clr\src\bcl\system\string.cs。
Empty 常量保存空字符串值。我们需要调用 String 构造函数,以便编译器不会将其标记为文字。
将其标记为文字意味着它不会显示为我们可以从本机访问的字段。
我从这个方便的地方找到了这个信息article http://www.codeproject.com/KB/dotnet/StringEmpty.aspx在代码项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)