0

下面显示了 MyEmpty,它是“”,而我认为它会为空。

public class SomeClass
{
    public static readonly String MyEmpty;
    ...
}

如果 MyEmpty 是 "" 而不是 null,它必须像下面这样吗?

public class SomeClass
{
    public static readonly String MyEmpty = "";
    ...
}

不知何故,“只读”使这种情况发生,但为什么呢?

提前致谢。

[编辑]

我正在使用 MessageBox.Show() 测试这两个,假设当我给它一个空值时该方法会抛出异常。但它根本没有抛出任何异常,这就是为什么我认为在我的第一个代码中 MyEmpty 不是 null 而是“”。

感谢大家尝试解释 null 和 "" 之间的区别以及我的错误。

4

4 回答 4

1

使用您的第一个代码 MyEmpty 应该为空。

public class SomeClass
{
    public static readonly String MyEmpty; <- Gets null
    ...
}

您指定了“readonly”关键字,所以我猜您将其值更改为“”的唯一位置是在构造函数中。

没有指定就无法获得“”的原因是需要分配空字符串“”(除非您引用string.empty),因此默认情况下您不可能获得该值

于 2012-05-23T06:24:34.463 回答
1

string.Empty和""一样,都是长度为 0 的字符串

虽然Null意味着没有字符串

于 2012-05-23T06:26:45.777 回答
0

字符串是引用类型。空字符串与 string = null 不同。第二意味着没有对字符串对象的引用。

于 2012-05-23T06:22:38.670 回答
0

The compiler do not allow empty structs, therefor stuff like readonly params and props get the initial value "" or 0 for int etc. Because theoreticaly you are not suppose to assign them while declaring one inside a method it would give you an exception.

于 2012-05-23T06:41:59.427 回答