![]() |
1
13
这个
性能差异(如果有)将是最小的。编译器的新版本实际上替代了
您还应该考虑代码的可读性和可维护性。使用
编辑:我查看了创建的本机代码。 C 3,发布模式,x86:
C 3,释放模式,X64:
所以,最终代码是相同的。 |
![]() |
2
7
换句话说,它们是完全不同的操作,在本例中恰好有相同的结果。它们是如何在组装级别实现的?好吧,这很可能取决于您使用的CLR版本。问你的朋友他们说的是哪种版本…桌面(32或64位?1,2,2sp1,2sp2,4?),压缩框架(同样,哪个版本?),Silverlight(哪个操作系统,哪个版本?)他们用过了吗?
我会(并且已经)争辩说,你应该使用任何你觉得更可读的。我个人更喜欢
我会 惊讶的 要了解代码,这两个代码之间的任何差异实际上会导致实际代码的性能显著差异,而不是在无论如何都有更好的方法来处理任务的情况下。 |
![]() |
3
7
从.NET 4.5差异 在这种情况下 是:完全没有。现在看来,JIT检测到了这个ldsfld,并直接注入插入的空字符串。 您可以这么说,因为在<4.5中,您可以通过反射更改string.empty的值,它会影响使用string.empty的代码。讨厌但可能。从4.5开始,这不再有效。如果您可以通过反射进行检查,您将得到黑客版本,但使用string.empty via ldsfld的代码将得到正确的空字符串,而不是黑客版本。 |