最近一位同事告诉我,设置字符串变量时不要使用string.Empty
,而是使用null
,因为它会污染堆栈?
他说不要这样做
string myString=string.Empty;
但是做string mystring=null;
这真的很重要吗?我知道线是一个物体,所以它有一定的意义.
我知道这是个愚蠢的问题,但你的看法是什么?
最近一位同事告诉我,设置字符串变量时不要使用string.Empty
,而是使用null
,因为它会污染堆栈?
他说不要这样做
string myString=string.Empty;
但是做string mystring=null;
这真的很重要吗?我知道线是一个物体,所以它有一定的意义.
我知道这是个愚蠢的问题,但你的看法是什么?
null
和Empty
非常不同,我不建议随意在它们之间切换.但两者都没有任何额外的"成本",因为Empty
是一个单一的固定参考(你可以多次使用它).
烟囱上没有由ldsfld引起的"污染"——这种担忧是....疯子加载null
可以说更便宜,但如果不小心判断值,可能会导致空引用异常.
就我个人而言,我两个都不用...如果我想要一个空字符串,我使用""
——简单而明显.实习意味着这also没有每次使用的开销.
在IL级别,""和Empty之间的区别只是ldstr与ldsfld-但两者都给出了相同的单一实例化字符串引用.此外,在较新的.NET版本中,JIT直接拦截这些内容,从而产生实际执行静电字段查找的空字符串引用without.基本上,除了可读性之外,完全没有理由关心这两种方式.我只用了"".