我尝试将对象值与数字进行比较以不生成错误,但我无法转换为更大的类型来检查它,它会给我转换错误。
注意:此[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;
...
答案 0 :(得分:1)
对我来说,对象无法转换为数字类型似乎很奇怪。 这样的事情对你有用:
object value = this[field];
long longvalue = 0;
if(long.TryParse(value.ToString(), out longvalue)){
if (longvalue < -922337203685 || longvalue > 922337203685)
ShowErrorMessageValueNotInRange();
....
}
如果您面临的真实问题是用户在文本框中插入太长的数字,在这种情况下,只需知道您将无法处理该数字,就可以限制charcters用户可以在TextBox
内插入。