C# 将变量的值设置为null或其他值

C# 将变量的值设置为null或其他值,c#,C#,我试图将序列的值设置为null(如果为null)或设置为一个值 var sequence = parameters[11].Value != DBNull.Value ? (int)parameters[11].Value : null; 但得到这个信息: 错误CS0173无法确定条件表达式的类型 因为“int”和 '' 有人能给我这个建议吗?注意,我需要(int)强制转换,因为参数作为对象返回 假设var序列是int?类型,您可以这样做 int? sequ

我试图将序列的值设置为null(如果为null)或设置为一个值

 var sequence = parameters[11].Value != DBNull.Value ? 
                (int)parameters[11].Value : null;
但得到这个信息:

错误CS0173无法确定条件表达式的类型 因为“int”和 ''


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

假设
var序列
int?
类型,您可以这样做

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

假设
var序列
int?
的类型,您可以这样做

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

您正在将
参数[11]的值
强制转换为
int
,该值似乎与您正在设置的
参数[11]的类型不匹配


尝试忽略您正在强制转换的
参数[11]的
(int)

。值
int
,该值似乎与您正在设置的
参数[11]的类型不匹配


试着省略
(int)

有两个问题:您没有声明变量的类型,并且编译器无法自行计算

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

这将编译为ok,因为编译器可以将int和null都转换为

有两个问题:您没有声明变量的类型,编译器无法自行计算

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

这将编译为ok,因为编译器可以将int和null转换为

您可能需要将直接转换更改为
转换为convert.ToInt32

 int? sequence = parameters[11].Value != DBNull.Value ? 
    new Nullable<int>(Convert.ToInt32(parameters[11].Value.ToString())) : null;
int?序列=参数[11]。值!=DBNull.Value?
新的Nullable(Convert.ToInt32(参数[11].Value.ToString()):null;

此外,由于要分配
int
null
,因此数据类型必须是
null
(即
int?

您可能需要将直接转换更改为
转换为.ToInt32

 int? sequence = parameters[11].Value != DBNull.Value ? 
    new Nullable<int>(Convert.ToInt32(parameters[11].Value.ToString())) : null;
int?序列=参数[11]。值!=DBNull.Value?
新的Nullable(Convert.ToInt32(参数[11].Value.ToString()):null;

另外,由于要分配
int
null
,因此数据类型必须是
null
(即
int?

我不知道为什么没有人使用默认关键字。。它是c语言中非常重要和强大的键。。你最好开始使用它。。在某些关键的一般情况下。。它将对你起到非常重要的作用

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

我不知道为什么没有人使用默认关键字。。它是c语言中非常重要和强大的键。。你最好开始使用它。。在某些关键的一般情况下。。它将对你起到非常重要的作用

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


那么,什么是真正的值
参数[11]
?错误似乎表明转换失败:
(int)参数[11]。值
参数[11]中有什么。值
?您可以考虑使用<代码>转换。Toint 32 < /COD>和<代码> toStrug()/代码>您是否尝试编辑CAST到(int?)这里的问题是,变量将假定它是int,或者null,但没有空int,除非您使它无效。给一个var一个空值是不好的。因此,您可以使常量int无效=-1;那么,什么是真正的值
参数[11]
?错误似乎表明转换失败:
(int)参数[11]。值
参数[11]中有什么。值
?您可以考虑使用<代码>转换。Toint 32 < /COD>和<代码> toStrug()/代码>您是否尝试编辑CAST到(int?)这里的问题是,变量将假定它是int,或者null,但没有空int,除非您使它无效。给一个var一个空值是不好的。因此,您可以使常量int无效=-1;如果使用var可能会更好,因为类型已经明显为
int?
,将变量
sequence
声明为
int?
并不是很好的做法。@Nathan如果不处理匿名类型或对象,如
IENumberable
,最好使用强类型。这使代码更易于阅读。如果您使用var,可能会更好,因为类型已经明显为
int?
,并且将变量
sequence
声明为
int?
不是很好的做法。@Nathan如果您不处理匿名类型或对象,如
IENumberable
,最好使用强类型。这使代码更易于阅读。为什么
Convert.ToInt32(参数[11].Value.ToString())
。。这可能很简单
Convert.ToInt32(参数[11].Value)
为什么要将
int
值转换为
string
并返回到
int
?@Byyo
parameters[11]。Value
可能是
对象,而不是
int
。如果它是一个
int
,那么操作错误一开始就不会发生。我同意,它是一个
对象
,但对象可以被转换/解析。转换是goWhy
Convert.ToInt32(参数[11].Value.ToString())
最低效的方法。。这可能很简单
Convert.ToInt32(参数[11].Value)
为什么要将
int
值转换为
string
并返回到
int
?@Byyo
parameters[11]。Value
可能是
对象,而不是
int
。如果它是一个
int
,那么操作错误一开始就不会发生。我同意,它是一个
对象
,但对象可以被转换/解析。转换是最低效的方法