我试图将序列的值设置为null,如果它为null或值
var sequence = parameters[11].Value != DBNull.Value ?
(int)parameters[11].Value : null;
但是收到这条消息:
错误CS0173无法确定条件表达式的类型 因为' int'之间没有隐式转换。和 ''
有人可以就这一个给我建议吗?请注意,我需要(int)强制转换,因为参数作为对象返回。
答案 0 :(得分:4)
假设var sequence
类型为int?
,您可以
int? sequence = parameters[11].Value != DBNull.Value ? (int?)parameters[11].Value : null;
答案 1 :(得分:3)
您可能希望将直接投射更改为Convert.ToInt32
int? sequence = parameters[11].Value != DBNull.Value ?
new Nullable<int>(Convert.ToInt32(parameters[11].Value.ToString())) : null;
此外,由于您要分配int
或null
,因此数据类型必须为nullable
(即int?
)
答案 2 :(得分:1)
您正在将parameters[11].Value
投射到int
,这似乎与您正在设置的parameters[11].Value
类型不符。
尝试省略(int)
。
答案 3 :(得分:1)
有两个问题:你没有声明变量的类型,编译器也无法自行解决。
int? sequence = (parameters[11].Value != DBNull.Value
? (int)parameters[11].Value
: null);
这将编译好,因为编译器可以将int和null都转换为Nullable<int>
答案 4 :(得分:0)
我不知道为什么没有人使用默认关键字..它非常important and powerful key in c#
..你最好开始使用它..在一些关键的一般情况下..它会玩对你来说非常重要的作用..
var sequence = parameters[11].Value != DBNull.Value ? Convert.ToInt32(parameters[11].Value) : default(int?);