C# 检查整数数据类型中的空值
我有一行给出了一个错误: 无法确定条件表达式的类型,因为“string”和“int”之间没有隐式转换 但是,form_request_id是一个int 如何检查int数据类型中的空值?int是一种值类型,不能为空值-它将默认为0 可以通过两种方式使int为null:C# 检查整数数据类型中的空值,c#,.net-4.0,null,C#,.net 4.0,Null,我有一行给出了一个错误: 无法确定条件表达式的类型,因为“string”和“int”之间没有隐式转换 但是,form_request_id是一个int 如何检查int数据类型中的空值?int是一种值类型,不能为空值-它将默认为0 可以通过两种方式使int为null: int? nullableInt = null; 或者 我认为,在最低层次上,这两种选择基本上是相同的,前者是后者的简称 这本质上为类型提供了一个包装器,它公开了两个有用的属性HasValue和HasValue。HasValue可
int? nullableInt = null;
或者
我认为,在最低层次上,这两种选择基本上是相同的,前者是后者的简称
这本质上为类型提供了一个包装器,它公开了两个有用的属性HasValue和HasValue。HasValue可用于检查包含的实例是否具有null以外的值,value允许您检索该值
有关更多信息和示例,请查看
正如@Justin Niessner所指出的,您得到的错误消息与此问题无关,而是与form_request_id和DBNull.Value.ToString是不同类型的事实有关。如果form\u request\u id不为null,则尝试调用该字符串或使用其他机制来分配所需的不同类型的值。form\u request\u id的类型可能不是int,而是int
int?//or
Nullable<int>
您需要将int变量定义为可为null的类型,为了检查它是否为null,您需要使用HasValue。要访问可为空变量的值,请使用x.value
int类型不能为null。int的默认值为0,因此如果要确保其值已设置,您可以对照0进行检查。您当前的问题不是检查表单_request_id中的null,因为您确实需要使用int,因此表单_request_id中的null实际上总是计算为false?使值实际为null 真正的问题是,条件表达式的两侧都返回不同的类型,一个是string,另一个是int 由于param[0]。值应根据条件实际为不同的类型…您将无法在此处使用快捷方式语句。你必须把它说清楚:
if(form_request_id == null)
param[0].Value = DBNull.Value;
else
param[0].Value = form_request_id;
正如我前面提到的,您仍然需要使用int?而不是int,这样您的变量就可以适当地保持空值。当您这样做时,您甚至不再需要该语句,因为数据库提供程序将看到一个null值,并在幕后为您替换DBNull.value。代码将是:
param[0].Value = form_request_id;
删除了declaration中的var关键字,它们不允许出现。D您的回答非常有用。谢谢。因为form\u request\u id是一个int,所以我不得不将您的代码修改为ifform\u request\u id==0
int? x = 10;
if (x.HasValue)
{
//code here
}
if(form_request_id == null)
param[0].Value = DBNull.Value;
else
param[0].Value = form_request_id;
param[0].Value = form_request_id;
param[0].Value = nullableInt ?? DBNull.Value;