平时敲代码中,经常碰到标题中的知识点,很模糊,现在进行梳理下:
Section One
"":被赋值为“”的字符串变量,会在栈上保存一个地址(占4个字节),该地址会指向 同时在堆上分配一个长度为0的内存空间(存放字符串的值)。
null:被赋值为null的变量,会在栈上保存一个地址(占4个字节),该地址不会指向堆上的任何内存空间(1、初始赋值时不分配内存;2、将原来所指的内存空间变为不可达)。
1、String.Empty 和 ""基本相同,String.Empty只是一种在语法上对""的优化;
2、String.Empty("") 和null的区别是,前者地址指向某一个堆中某一内存空间,而后者不指向堆上的任何内存空间。
Section Two
Dispose()方法实际上是销毁了对象的实例,但是该对象变量仍然指向这块被销毁的内存地址上!而只要有所指向,它就绝不等于null!