无法确定条件表达式的类型,因为';int';和';字符串';

本文关键字:字符串 int 因为 表达式 条件 类型 无法确定 | 更新日期: 2023-09-27 17:52:52

我有这行代码:

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' 

我不明白为什么我会犯这个错误。我怎样才能摆脱它?谢谢

无法确定条件表达式的类型,因为';int';和';字符串';

三元运算符要求两个输出的类型相同。使用以下内容:

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?,因此编译器会对您大喊大叫。这是假设.Agesint?,否则您应该将.ToString()作为检查m.RelatedLook.Age的结果。

不过,将Ages存储为字符串听起来有点臭——可以考虑使用IEnumerable<int>吗?

我最初试图解释这个答案,也许Ages类型不正确,但我应该解释一下,发生这种情况是因为三进制不能同时解析为字符串int?因为这些类型是不等价的。只要ToString在第一个年龄就可以修复编译器错误。