2020-11-28

【C#】String.empty与""的区别以及与null的区别

文章目录


前言

敲黑板的知识点:引用类型是将对象是实际数据保存在堆上, 将对象在堆上的地址保存在栈上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、String.empty到底是什么?

Empty是string类中的一个静态的只读字段,他的定义是这样的:
  public static readonly String Empty = “”;

也就是说string.Empty的内部实现是等于””的。

二、String.empty不分配存储空间纯属扯淡

1.概念性

回忆敲黑板的知识点:引用类型是将对象是实际数据保存在堆上, 将对象在堆上的地址保存在栈上。

2.相同之处

string.Empty与””都会在栈上保存一个地址这个地址占4字节,指向内存堆中的某个长度为0的空间,这个空间保存的是string.Empty的实际值。

3.不同之处

string.Empty是在语法级别对“”的优化,而且从美观角度看,也占优势。

三、string.Empty与null的区别

string str = null;在地址,但在没有空间;null是string的默认值

string str2 = string.empty;它和str1差不多,在堆栈都有空间,不同就是在语法级上对str1的优化

总结

string str = null;在地址,但在没有空间;null是string的默认值;
string str1 =“”:空字符串,堆栈都有,并且堆上地址为空;
string str2 = string.empty;它和str1差不多,在堆栈都有空间,不同就是在语法级上对str1的优化。

上一篇:单调队列


下一篇:.NET ------ CheckBoxList 的用法