в c # как сравнить объект (номер в штучной упаковке) с номером - PullRequest
1 голос
/ 26 января 2012

Я пытаюсь сравнить значение объекта с числами, чтобы не выдавать ошибку, но я не могу привести к большему типу, чтобы проверить его, это дает мне ошибку преобразования

примечание: это [поле] является объектом, значение которого записывается пользователем в текстовое поле, связанное с полем

Как лучше всего сравнить объект (то есть число) с числовым значением? Я должен сравнить равенство с [числовой тип]. Разбор для каждого типа возможного числового типа или может предложить мое лучшее решение? спасибо

пример:

...
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 Ответ

1 голос
/ 26 января 2012

Мне кажется странным, что объект не может быть приведен к числовому типу.Нечто подобное должно работать для вас:

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

....
}

Если проблема real , с которой вы сталкиваетесь, заключается в том, что пользователь вставляет слишком длинное число в текстовое поле, в данном случае, просто зная, что выне сможет обработать это число, ограничьте количество символов, которое пользователь может вставить внутрь этого TextBox.

...