> GetValues(int someId, int someOtherlId) { var t = new List>>(); using (var-6ren">
gpt4 book ai didi

c# - 尝试将 null 分配给可空 int 会导致 "There is no implicit conversion between ' int' 和 'null'“错误

转载 作者:行者123 更新时间:2023-12-03 04:58:10 25 4
gpt4 key购买 nike

public List<Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>> 
GetValues(int someId, int someOtherlId)
{
var t = new List<Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>>();
using (var context = new Entities(ConnString))
{
var pc = context.SomeTable.Where(c => c.SomeId == someId &&
c.SomeOtherId == someOtherId).OrderBy(c => c.Id).ToList();
t.AddRange(pc.Select(cols => new Tuple<int, int, int, string, int, int, Tuple<bool, bool, int?>>
(cols.Id, cols.someId, cols.someOtherId, cols.ColumnName, cols.MinDataLength,
cols.MaxDataLength, new Tuple<bool, bool, int?>(cols.Required, cols.Eav.HasValue && cols.Eav.Value,
cols.AttribId.HasValue ? cols.AttribId.Value : null))));
}
return t;
}
}

无法弄清楚为什么此代码无法编译并生成“‘int’和‘null’之间没有隐式转换”错误。

在第二个元组中,int?始终被标记为可为空,那么为什么它被 t.AddRange 中的编译器检测为普通 int ,生成“无法确定条件表达式的类型,因为 'int' 和 'int' 之间没有隐式转换” ''” cols.AttribId.HasValue 出现错误? cols.AttribId.Value:null

有什么想法吗?

最佳答案

如果您尝试将 int? 添加到已经接受 int? 的元组中,为什么不直接将其添加到您的元组中 - 即替换:

new Tuple<bool, bool, int?>(..., cols.AttribId.HasValue ? cols.AttribId.Value : null)

new Tuple<bool, bool, int?>(..., cols.AttribId)

或者为了更简洁一点,利用 Tuple.Create 的类型推断:

Tuple.Create(..., cols.AttribId)

关于c# - 尝试将 null 分配给可空 int 会导致 "There is no implicit conversion between ' int' 和 'null'“错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19260195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com