查看文章 |
String.Empty和""到底有什么区别?
严格的说,String.Empty是一个静态引用。 查看.net framework 下的 String.cs 源码,你会发现,微软是这么定义的。 // The Empty constant holds the empty string value. 那么 string str1 = string.Empty; 和 string str2 = ""; 有什么异同呢? 一堆资料和所谓的面试题上都说""是分配内存空间的,Empty就不分配了。。。这个有点不靠谱。 其实吧,""相当于new了一个实例,再把这个实例赋值给str2,而Empty则是传递了一个静态引用。 真的有那些资料上说的那么玄吗?我们做个性能测试的例子就知道了。 static void Main(string[] args) DateTime dateInt1 = System.DateTime.Now; 经过我的小黑测试,结果如下:
500万次才只有15毫秒的差距,实在是让人感觉不出来,再说了,哪个正常人没事循环几百万次玩? 数量级不够?体现不出来优势?好,扩大到5亿次。 结果如下:
当然,这只是一个粗略的估计,不过可以看出来,性能上没有网上说的那么夸张。这么点点差距,正常人根本就感觉不出来的,当然,超人除外。。。
网上的传说你也不能全信。。。谁试谁知道。。。
|



