C# 将变量的值设置为null或其他值
我试图将序列的值设置为null(如果为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
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
?@Byyoparameters[11]。Value
可能是对象,而不是int
。如果它是一个int
,那么操作错误一开始就不会发生。我同意,它是一个对象
,但对象可以被转换/解析。转换是goWhyConvert.ToInt32(参数[11].Value.ToString())
最低效的方法。。这可能很简单Convert.ToInt32(参数[11].Value)
为什么要将int
值转换为string
并返回到int
?@Byyoparameters[11]。Value
可能是对象,而不是int
。如果它是一个int
,那么操作错误一开始就不会发生。我同意,它是一个对象
,但对象可以被转换/解析。转换是最低效的方法