区别是:string. Empty的内部实现是等于”的。二者在优化方面稍有差别,string.Empty 是C#对”在语法级别的优化。引用类型的数据将对象在堆.上的地址保存在””都会分配存储空间,具体的说是都会在内存的栈和堆上分配存储空间。
string. Empty的内部实现是等于”的。二者在优化方面稍有差别,string.Empty 是C#对”在语法级别的优化。这点可以从上面string.Empty的内部实现看出来。也就是说”是通过CLR (Common Language Runtime)进行优化的,CLR会维护一个字符串池,以防在堆中创建重复的字符串。而string.Empty是-种C#语法级别的优化,是在C#编译器将代码编译为IL (即MSIL )时进行了优化,即所有对string类的静态字段Empty的访问都会被指向同一引用,以节省内存空间。
引用类型的数据将对象在堆.上的地址保存在””都会分配存储空间,具体的说是都会在内存的栈和堆上分配存储空间。因此string.Empty与’ “”都会在栈上保存-个地址,这个地址占4字节,指向内存堆中的某个长度为0的空间,这个空间保存的是string. Empty的实际值。
延伸阅读:
什么是C#?
C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
文章标题:在C#中 String.Empty和 “” 有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38559