以下显示了MyEmpty,它是“”,而我认为它将为null。
public class SomeClass
{
public static readonly String MyEmpty;
...
}
如果MyEmpty是“”而不是null,它是否必须如下所示?
public class SomeClass
{
public static readonly String MyEmpty = "";
...
}
不知何故,'readonly'会让这种事发生,但为什么呢?
提前致谢。
[编辑]
我正在使用MessageBox.Show()测试这两个,假设当我给它一个空值时该方法会抛出异常。但它根本没有抛出任何异常,这就是为什么我认为在我的第一个代码中MyEmpty不是null而是“”。
谢谢大家试图解释null和“”之间的区别以及我的错误。
答案 0 :(得分:1)
使用您的第一个代码MyEmpty应为null。
public class SomeClass
{
public static readonly String MyEmpty; <- Gets null
...
}
你指定了“readonly”关键字,所以我猜你将它的值改为“”的唯一地方是在构造函数中。
你不能在没有指定的情况下得到“”的原因是需要分配空字符串“”(除非你引用string.empty)所以不能默认你得到那个值
答案 1 :(得分:1)
string.Empty 与“”相同,长度为0的字符串。
Null 表示无字符串。
答案 2 :(得分:0)
String是引用类型。空字符串与string = null不同。第二个意味着没有对字符串对象的引用。
答案 3 :(得分:0)
编译器不允许空结构,因此像readonly params和props这样的东西得到int的初始值“”或0等。因为理论上你不会在为方法声明一个方法时分配它们,它会给你一个异常。