在c#中,如何将对象(装箱编号)与数字进行比较

在c#中,如何将对象(装箱编号)与数字进行比较,c#,casting,numbers,C#,Casting,Numbers,我试图将一个对象值与数字进行比较,以避免产生错误,但我无法转换为更大的类型来检查它,这会导致转换错误 注意:此[field]是一个对象,其值由用户在绑定到字段的文本框上写入 比较对象(即数字)与数值的最佳方法是什么? 我必须将equality与[numerictype]进行比较。对于每种可能的数值类型,Tryparse是否可以建议我的最佳解决方案?谢谢 例如: ... case (int)SqlDbType.Int: // Error: object and number not all

我试图将一个对象值与数字进行比较,以避免产生错误,但我无法转换为更大的类型来检查它,这会导致转换错误

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

比较对象(即数字)与数值的最佳方法是什么? 我必须将equality与[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;         
...
。。。
案例(int)SqlDbType.int:
//错误:不允许对象和编号。。。
如果(此[字段]<-2147483648 | |此[字段]>2147483647)
淋浴RorMessageValueNotInRange();
打破
案例(int)SqlDbType.Money:
//错误:不允许强制转换。。。
如果((Int64)此[字段]<-922337203685 | |(Int64)此[字段]>922337203685)
淋浴RorMessageValueNotInRange();
打破
案例(int)SqlDbType.BigInt:
//错误:不允许强制转换。。。
如果((Int64)此[字段]<-9223372036854775808 | |(Int64)此[字段]>9223372036854775807)
淋浴RorMessageValueNotInRange();
打破
...

我觉得奇怪的是,对象不能转换为数字类型。 像这样的东西应该适合你:

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

....
}
对象值=此[字段];
长值=0;
if(long.TryParse(value.ToString(),out longvalue)){
如果(长值<-922337203685 | |长值>922337203685)
淋浴RorMessageValueNotInRange();
....
}

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

,我觉得奇怪的是,对象无法转换为数字类型。 像这样的东西应该适合你:

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

....
}
对象值=此[字段];
长值=0;
if(long.TryParse(value.ToString(),out longvalue)){
如果(长值<-922337203685 | |长值>922337203685)
淋浴RorMessageValueNotInRange();
....
}

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

此[字段]
是什么类型?它只是
对象
类型吗?你不能控制文本框的字符长度吗?是一个可以有int、int32、bit、decimal、money等的对象。我可以控制字符长度,但假设我有一个整数字段(-32768到32768 max),我可以输入99999,它将是一个有效值。关于它,我将看看是否可以在文本框中设置一个掩码,允许最小值和最大值之间的值(可能是正则表达式?)
这个[field]
是什么类型?它只是
对象
类型吗?你不能控制文本框的字符长度吗?是一个可以有int、int32、bit、decimal、money等的对象。我可以控制字符长度,但假设我有一个整数字段(-32768到32768 max),我可以输入99999,它将是一个有效值。关于它,我将看看是否可以在文本框中设置一个掩码,允许一个介于最小值和最大值之间的值(可能是正则表达式?)我将使用TryParse(我使用(long)value而不是long.TryParse(value,out longValue)尝试您的建议并将文本框输入限制为11个字符,这似乎是目前最好的方法。如果我没有看到最佳解决方案,它将是答案。thanksI将使用TryParse(我使用了(long)value而不是long.TryParse(value,out longValue)尝试您的建议并将文本框输入限制为11个字符,这似乎是目前最好的方法。如果我没有看到最好的解决方案,它将是答案。谢谢