将变量的值设置为null或另一个值

时间:2016-03-08 08:32:48

标签: c#

我试图将序列的值设置为null,如果它为null或值

 var sequence = parameters[11].Value != DBNull.Value ? 
                (int)parameters[11].Value : null;

但是收到这条消息:

  

错误CS0173无法确定条件表达式的类型   因为' int'之间没有隐式转换。和   ''

有人可以就这一个给我建议吗?请注意,我需要(int)强制转换,因为参数作为对象返回。

5 个答案:

答案 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;

此外,由于您要分配intnull,因此数据类型必须为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?);