【发布时间】:2013-02-07 08:03:26
【问题描述】:
有人可以解释一下为什么我必须将null 转换为int? 的逻辑原因
什么时候左参数类型可以同时具有它们的两种类型?
很想做
int? k = (DateTime.Now.Ticks%5 > 3 ? 1 : null);
我必须这样做
int? k = (DateTime.Now.Ticks%5 > 3 ? 1 : (int?) null);
虽然int? k = null 完全有效。
相反的例子:
我不必这样做:
string k = (DateTime.Now.Ticks%5 > 3 ? "lala" : null);
【问题讨论】:
-
见stackoverflow.com/questions/10964065/… - 不是完全重复,但很接近。
-
@JonSkeet 条件表达式的类型必须是第二个操作数的类型或第三个操作数的类型在我的第一个示例中它找不到普通类型。好的。但在我的上一个示例中,常见的类型是什么?细绳 ? null 可以是任何东西
-
@RoyiNamir:类型为
string-null可以转换为string,而不能转换为int。跨度>