在我的代码中,我有以下代码:
Order = config.DeploymentSteps.Select(x => x.Order).DefaultIfEmpty().Max() + 1;
这个错误信息是无法隐式将类型 'int' 转换为 'short'
。参考一下,Order
和x.Order
都是short类型的,Max()
正确地返回了一个short类型(我已经验证过了)。所以我理解,它认为1
是一个整数类型并引发了错误。于是我把代码改成了:
Order = config.DeploymentSteps.Select(x => x.Order).DefaultIfEmpty().Max() + (short)1;
我现在还是得到了相同的编译错误。也许它没有正确地进行类型转换,所以我尝试将其更改为
Order = config.DeploymentSteps.Select(x => x.Order).DefaultIfEmpty().Max() + Convert.ToInt16(1);
然而我仍然收到相同的错误。最终,我通过转换整个表达式使其工作:
Order = Convert.ToInt16(config.DeploymentSteps.Select(x => x.Order).DefaultIfEmpty().Max() + 1);
为什么我不能直接将1强制转换为short类型并加到另一个short类型上而不是整个内容都要进行强制转换呢?