【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的优化。