![]() |
1
29
C#3.0规范的相关部分是7.13,条件运算符: ?的第二个和第三个操作数?:运算符控制条件表达式的类型。设X和Y是第二个和第三个操作数的类型。然后, 如果X和Y是同一类型,那么这就是条件的类型 否则,如果从X到Y存在隐式转换(§6.1),但从Y到X不存在,则Y是条件表达式的类型。 否则,如果从Y到X存在隐式转换(§6.1),但不存在从X到Y的隐式转换,则X是条件表达式的类型。 否则,无法确定表达式类型,并发生编译时错误。 |
![]() |
2
15
我也很恼火,它不能根据赋值推断类型,尤其是当它是值类型时。不过,当你进入对象的层次结构时,是有原因的。 如果“ResultOfSomeCalc()”返回“int?”,那么这将起作用 .C#需要找出类型,而不管赋值的左边是什么。因此,你告诉它你将返回null或int,而编译器中的逻辑不存在,无法让它替换Nullable作为公分母。 请注意,这些变体确实有效,它可能有助于您理解:
希望这能有所帮助。 |
![]() |
3
5
这似乎是编译器应该能够自己解决的问题,但还有另一种方法可以做到这一点,即使用默认关键字。它可能比演员阵容更不丑陋:
这种默认值的使用似乎没有很好的记录,但确实有效。至少它可以让你不必在代码中添加魔法值(我认为空/零/假等确实是魔法值)。 |
![]() |
4
4
|
![]() |
6
0
将函数ResultOfSomeCalc()的返回类型设置为null标签int,类似于(int?)
|
![]() |
Tanu · 使用三元运算符时获得Lint无嵌套三元错误 2 年前 |
![]() |
Davtho1983 · 条件运算符不适用于ngStyle 7 年前 |
|
wibby35 · 是否可以转换为内联? 7 年前 |
|
user5155804 · 条件表达式中未赋值的指针是否变为空? 7 年前 |
![]() |
Bryce · PHP切换条件语句更好的方法 7 年前 |
![]() |
Farvardin kiran · java条件运算符和不同类型 10 年前 |