以下代码无法编译:
//int a = ...
int? b = (int?) (a != 0 ? a : null);
Run Code Online (Sandbox Code Playgroud)
为了编译,需要将其更改为
int? b = (a != 0 ? a : (int?) null);
Run Code Online (Sandbox Code Playgroud)
由于这两个b = null和b = a是合法的,这是没有意义的我.
为什么我们不得不强制null转换为一个int?为什么我们不能简单地为整个表达式提供一个显式类型转换(我知道在其他情况下可能)?