在c#中如何比较对象(盒装数字)和数字

时间:2012-01-25 22:15:18

标签: c# casting numbers

我尝试将对象值与数字进行比较以不生成错误,但我无法转换为更大的类型来检查它,它会给我转换错误。

注意:此[field]是一个对象,其具有用户在绑定到字段的文本框上写入的值

将对象(即数字)与数值进行比较的最佳方法是什么? 我必须将[numerictype] .Tryparse与每种可能的数字类型进行比较,或者可以建议我的最佳解决方案?感谢

示例:

...
case (int)SqlDbType.Int:
    // Error: object and number not allowed...
    if (this[field] < -2147483648 || this[field] > 2147483647)
        ShowErrorMessageValueNotInRange();
        break;
case (int)SqlDbType.Money:
    // Error: cast not allowed...
    if ((Int64)this[field] < -922337203685 || (Int64)this[field] > 922337203685)
        ShowErrorMessageValueNotInRange();
        break;
case (int)SqlDbType.BigInt:
    // Error: cast not allowed...
    if ((Int64)this[field] < -9223372036854775808 || (Int64)this[field] > 9223372036854775807)
        ShowErrorMessageValueNotInRange();
        break;         
...

1 个答案:

答案 0 :(得分:1)

对我来说,对象无法转换为数字类型似乎很奇怪。 这样的事情对你有用:

object value = this[field]; 
long longvalue = 0;
if(long.TryParse(value.ToString(), out longvalue)){
   if (longvalue < -922337203685 || longvalue > 922337203685)
        ShowErrorMessageValueNotInRange();

....
}

如果您面临的真实问题是用户在文本框中插入太长的数字,在这种情况下,只需知道您将无法处理该数字,就可以限制charcters用户可以在TextBox内插入。