what is the difference among these
1. string str=string.Empty;
2. string str="";
3. string str=null;
是否有任何不同的方式来使用这些陈述......
感谢 SAJ
答案 0 :(得分:4)
string.Empty
和""
最终都是对“真正的”字符串对象的引用,该对象恰好是空的。因此,您可以在其上调用方法,使用其Length
属性等。
null
引用是一个不引用任何对象的值。如果您尝试取消引用null,则会获得NullReferenceException
。
至于您选择""
还是string.Empty
- 这实际上是个人偏好的问题。我倾向于选择""
,但其他人认为string.Empty
更具可读性。请注意,虽然""
是常量表达式,但string.Empty
不是,因此您不能在case语句中使用后者。
编辑:请注意,此编辑时出现的其他两个答案都表示null不是值,或者该变量尚未赋值。这是不正确的。 null
是一个与任何其他值一样的值 - 只是它不引用任何对象。特别是,为变量分配null
将覆盖任何先前的值,如果它是一个局部变量,则赋值意味着该变量已被“明确赋值”。例如,比较这两个片段
string s;
Console.WriteLine(s); // Compile-time error: s isn't definitely assigned
string s = null;
Console.WriteLine(s); // Fine: s has the value null
答案 1 :(得分:2)
string.Empty
是另一种说""
的方式。 (according to Jon Skeet,使用团队中常见的任何内容)。
null表示根本没有赋值。
(但是Skeet在这里解释他自己( - :)