关于.net:在C#中,为什么string.Empty是一个字段而不是一个常量?

In C#, why is string.Empty a field instead of a constant?

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

Possible Duplicate:
Why isn't String.Empty a constant?

在C 4.0中为方法参数指定默认值时,可以使用"but not string.empty"。如果string.empty可能意味着除"之外的其他内容,这是有意义的,但它是一个常量,它只是没有声明为const。

这仅仅是微软的一个错误,他们不能用const来清除它,因为它对语言来说太核心了,会是一个突破性的改变吗?还是有正当的理由让这个地方成为一个人口稠密的地方而不是一个警察?


它不能是文字,也不能从String的本地部分访问。

评论(在参考资料中)说:

1
2
3
4
5
// The Empty constant holds the empty string value.
//We need to call the String constructor so that the compiler doesn't mark this as a literal.
//Marking this as a literal would mean that it doesn't show up as a field which we can access
//from native.
public static readonly String Empty ="";