为什么在创建const字符串变量时不能使用String.Empty?

时间:2016-08-09 19:13:01

标签: c#

我经常使用String.Empty作为占位符,相当于""。所以我的问题是,为什么const不喜欢String.Empty?他们编译相同。

// Good
private const string example = "";

// Bad
private const string example = String.Empty;

String.Empty中的内容使其无法与const一起使用。

1 个答案:

答案 0 :(得分:9)

String.Empty 不是常量,它只是readonly字段。由于它是readonly字段(在编译时已知),因此无法将其分配给常量。

http://referencesource.microsoft.com/#mscorlib/system/string.cs,c9f70a27facb27cf

...
//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;