This question already has answers here:
Cannot implicitly convert type 'int' to 'short' [duplicate]

(9个答案)


6年前关闭。




下面的表情还可以
short d = ("obj" == "obj" ) ? 1 : 2;

但是当您像下面那样使用它时,会发生语法错误
short d = (DateTime.Now == DateTime.Now) ? 1 : 2;

无法将类型'int'隐式转换为'short'。存在显式转换(您是否缺少类型转换?)

谁能解释为什么会这样?

在三元运算符中比较字符串到字符串和日期时间到日期时间之间有区别,为什么?

如果您能帮助我,我将不胜感激。

最佳答案

C# language specification, version 5,第6.1.9节:



您的第一个示例是一个常量表达式,因为可以在编译时对其求值。但请参阅第7.19节以获取更多详细信息:



[...]

关于c# - 三元运算符的行为不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21781096/

10-11 01:30