为什么String.Empty是设计成static readonly而不是const?
const 表示常量. 编译时就确定了 例如
const string a="";
void method(){
string b=a;
};
编译后的代码实际是==>
void method(){
string b="";
};
readonly 是运行时'常量'
, 这里的常量我打引号了哈.
static readonly a=""; ==> 可以理解为 是static readonly a=new string(""); 这里的""
实际上是 '\0'
. 0长度&null结尾的字符串.
static readonly a=new string("");
void method(){
string b=a;
};
==>编译后
static readonly a=new string("");
void method(){
string b=a;
};
大佬对``const``和``static readonly``的解释已经很清楚了,至于说为什么不用``const``,其实也不是不能用了,别较真,如果用了``const``你又会问为什么不用``static readonly``