我有这行代码:
Ages = m.RelatedMultipleWorks.Count == 0 ?
m.RelatedLook.Age: m.RelatedLook.Age.ToString() + " | " +
m.RelatedMultipleWorks.
Select(z => z.RelatedLook.Age.ToString()).
Aggregate((current, next) => current + " | " + next)
整条线都给出了这个错误:
Type of conditional expression cannot be determined because there is no implicit conversion between 'int?' and 'string'
我不明白为什么我会犯这个错误。我怎样才能摆脱它?谢谢
三元运算符要求两个输出的类型相同。使用以下内容:
Ages = m.RelatedMultipleWorks.Count == 0 ? m.RelatedLook.Age.ToString(): m.RelatedLook.Age.ToString() + " | " + m.RelatedMultipleWorks.Select(z => z.RelatedLook.Age.ToString()).Aggregate((current, next) => current + " | " + next),
您的m.RelatedLook.Age
可能是int?
,但由于.Aggregate
,二次三元表达式的结果是string
。
CCD_ 5(推测地(期望CCD_;三进制的后半部分无法隐式转换为int?
,因此编译器会对您大喊大叫。这是假设.Ages
是int?
,否则您应该将.ToString()
作为检查m.RelatedLook.Age
的结果。
不过,将Ages
存储为字符串听起来有点臭——可以考虑使用IEnumerable<int>
吗?
我最初试图解释这个答案,也许Ages
类型不正确,但我应该解释一下,发生这种情况是因为三进制不能同时解析为字符串和int?因为这些类型是不等价的。只要ToString
在第一个年龄就可以修复编译器错误。