【发布时间】:2016-09-28 06:40:30
【问题描述】:
在 C# 中,我可以将一个数字(最多 255)直接分配给字节类型的变量:
byte red = 255;
但是,如果我使用条件运算符在更复杂的语句中执行此操作:
byte red = (redNode != null) ? byte.Parse(redNode.Value) : 255;
我收到一个错误:“CS0266 无法将类型 'int' 隐式转换为 'byte'。存在显式转换(您是否缺少强制转换?)”。
我需要明确地将 255 转换为字节:
byte red = (redNode != null) ? byte.Parse(redNode.Value) : (byte)255;
为什么需要这个演员表?
【问题讨论】:
-
因为 if else 都应该返回相同类型的实例
-
没有从 int 到 byte 的隐式转换,但有一个显式转换。它被命名为“显式”是有原因的——你需要明确地应用它:)
标签: c# casting conditional-operator