【发布时间】:2012-11-04 06:35:15
【问题描述】:
这是有效的 C# 代码:
var samsung= "xyz" + null + null + null + null + "890"; // xyz890
这是无效的 C# 代码:
var iphone= null.ToString(); // compiler error
为什么第一个语句有效,第二个语句无效?
【问题讨论】:
-
你不能改变
nothing(这里是null) -
想知道编译器是否删除了空添加?有人知道吗?
-
@GrantH。如果它们是空常量,那么是的。事实上整个表达式在 IL 中被简化为
"xyz890"。 -
@GrantH。它们是,但从技术上讲,它不会改变结果,只会改变性能。如果它在编译时没有将它评估为单个常量(你可以简单地改变它以防止它能够做到这一点)那么它仍然可以工作,如果它不能在运行时运行它那么它不会'无法在编译时对其进行优化。换句话说,编译时优化并没有改变为什么它起作用或不起作用的解释。
标签: c# .net string null concatenation