15.C#空字符串的区别

  1. 15.CSharp空字符串的区别
    1. 15.1 题目
    2. 15.2 深入解析
    3. 15.3 答题示例
    4. 15.4 关键词联想

15.CSharp空字符串的区别


15.1 题目

请说明字符串中 string str = nullstring str = ""string str = string.Empty 三者的区别。


15.2 深入解析

在 C# 中,这三种方式都可以用来表示空字符串,但它们有一些细微的区别:

  1. **string str = null**:

    • 这种方式表示字符串变量 str 没有引用任何对象,即它在堆内存中没有分配任何内存地址,它的值是 null。尝试对其进行字符串操作可能会引发空引用异常。
  2. **string str = ""**:

    • 这种方式表示字符串变量 str 引用了一个空字符串对象,在堆内存中分配了空间,其中存储的是空字符串。它与 string.Empty 效果相同。
  3. **string str = string.Empty**:

    • string.Empty 与字面量 "" 在运行时常指向同一空串实例(驻留/共享),不会在每次赋值时额外分配不同内容。使用 string.Empty 可读性更好,避免误把 "" 看成其他字面量。

15.3 答题示例

string str = null; 变量不指向任何对象,对其调用方法会抛空引用异常;
string str = "";string str = string.Empty; 都引用空串实例,不会抛异常;二者通常等价,优先写 string.Empty 更清晰。”


15.4 关键词联想

  • null 引用
  • 空字符串实例
  • string.Empty
  • NullReferenceException
  • 共享实例
  • 语义清晰


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏