无法确定条件表达式的C#类型,因为';class1';和';class2'

本文关键字:class1 class2 因为 表达式 条件 类型 无法确定 | 更新日期: 2023-09-27 17:59:11

        if (Inventory.Length == 12)
            chr.Equipment = Inventory.Select(_ => _ == null ? (short)-1 : _.ObjectType).ToArray();
        else if (Inventory.Length == 20)
        {
            short[] equip = Inventory.Select(_ => _ == null ? (short)-1 : _.ObjectType).ToArray();
            Array.Resize(ref equip, 12);
            chr.Equipment = equip;
            equip = Inventory.Select(_ => _ == null ? (short)-1 : _.ObjectType).Reverse().ToArray();
            Array.Resize(ref equip, 8);
            chr.Backpack = equip; 
        }  

使用此代码,我得到以下错误:

无法确定条件表达式的类型,因为"short"answers"ushort"之间没有隐式转换

如果有人能至少解释一下我做错了什么,那真是太好了

条件运算符的第二个和第三个操作数必须是相同的类型,或者需要从一个操作数隐式转换到另一个。您提供了一个类型为short的操作数和一个类型的ushort的操作数,两者之间没有隐式转换。

如果您碰巧知道_.ObjectType总是适合short,即使它是ushort,您也可以对其进行强制转换(存在显式转换(。如果不是,则需要将第二个操作数设为-1以外的值,因为-1不是有效的ushort

无法确定条件表达式的C#类型,因为';class1';和';class2'