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

时间:2011-08-10 18:23:52

标签: c# .net string constants

  

可能重复:
  Why isn't String.Empty a constant?

在C#4.0中为方法参数指定默认值时,我可以使用“”但不能使用string.Empty。如果string.Empty可能意味着“”之外的其他内容,那么这是有意义的,但它是一个常量,它不会被声明为const。

这对微软来说只是一个错误,他们无法用const清理它,因为它对于语言来说太核心而且会是一个突破性的变化?或者是否有正当理由让这个人口居首行而不是const?

1 个答案:

答案 0 :(得分:4)

它不能是文字,也不能从String的原生半部分访问。

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

// 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 = "";