C# 检查整数数据类型中的空值

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可

我有一行给出了一个错误: 无法确定条件表达式的类型,因为“string”和“int”之间没有隐式转换

但是,form_request_id是一个int

如何检查int数据类型中的空值?

int是一种值类型,不能为空值-它将默认为0

可以通过两种方式使int为null:

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;