C# 操作员'<';无法应用于类型为';对象';和';int';

C# 操作员'<';无法应用于类型为';对象';和';int';,c#,asp.net,operators,C#,Asp.net,Operators,我正在ASP.NET和C#中创建一个用户登录,但是在编写了一个函数之后,由于一个错误,我无法编译该函数。错误状态为“运算符”您必须强制转换该值,因为它是一个对象 if (Convert.ToInt32(objReturnParam.Value) < 1) if(Convert.ToInt32(objReturnParam.Value)

我正在ASP.NET和C#中创建一个用户登录,但是在编写了一个函数之后,由于一个错误,我无法编译该函数。错误状态为“运算符”您必须强制转换该值,因为它是一个对象

 if (Convert.ToInt32(objReturnParam.Value) < 1)
if(Convert.ToInt32(objReturnParam.Value)<1)

如果objReturnParam为null,则应使用TryParse

int ReturnID = 0;
int.TryParse(objReturnParam.Value, ReturnID);
if(ReturnID > 0)
{
      .............
}

如前所述,值的类型为object。如果您确信它始终包含int(而不是,例如,DBNull.Value),则可以在比较之前将其强制转换为int:

if ((int)objReturnParam.Value < 1)
if((int)objReturnParam.Value<1)

除非objReturnParam.Value是字符串属性,否则这将不起作用,但我们知道它是一个对象。SqlParameter的Value属性是字符串。如果此转换不起作用,则ReturnID将为零,从而满足If语句的要求。因为ReturnID未定义为可为null(int?),在转换失败时,值为0。OP的问题和文档()都表明属性的类型是object,而不是string。顺便说一句,我没有投反对票。@Geekyoun需要代码甚至不会编译,SqlParameter的value属性是object
if ((int)objReturnParam.Value < 1)