string str = null;
仅初始化对象。
表示字符串变量 str 被初始化为 null。null表示变量不引用任何对象。如果尝试对一个为 null 的字符串变量进行操作,比如访问其属性或调用其方法,将会引发 NullReferenceException 异常。
string str = "";
初始化对象并分配空间。
这表示字符串变量 str 被初始化为空字符串。空字符串是一个长度为0的字符串,它不是 null。对一个空字符串进行操作是安全的,不会引发异常。
区别:
- 在内存中的表示:null 表示变量不引用任何对象,而空字符串是一个长度为0的字符串对象。
- 对象引用:null 表示没有引用任何对象,而空字符串是一个有效的字符串对象。
- 安全性:对一个为 null 的字符串变量进行操作会引发 NullReferenceException 异常,而对一个空字符串进行操作是安全的。
需要注意的是,在使用字符串变量之前,最好先进行判空操作,以避免空引用异常的发生。
例如可以使用 if 语句或者 string.IsNullOrEmpty() 方法来检查字符串是否为空或null。