2013-12-21 4 views
0

У меня была переменная типа объекта, и я хотел бы преобразовать ее в int заранее.?Unbox значение типа object long

предыдущий код

val = Math.Max(((int)DatabaseHelper.ExecuteScalerCommand(query)), numbering.StartValue); 

Теперь мне нужно, чтобы преобразовать его тип долго. Я пытаюсь использовать long.tryparse()

long t = 0; 
long.TryParse(DatabaseHelper.ExecuteScalerCommand(query).ToString(), out t); 
var val = Math.Max(t, numbering.StartValue); 

есть лучший способ справиться с этой проблемой?

+0

Что случилось с этим? Это не работает? –

+0

это работает, но это не так чисто! – fasadat

+0

Согласен с удаленным ответом. Если 'object x;' содержит поле с 'int', то есть если' (int) x' работает и распаковывает 'object x' в' int', то правильная вещь, которую нужно сделать, это '(long) (int) x'. Однако последнее преобразование от 'int' до' long' часто будет неявным, как в 'long t = (int) x;' (так же, как 'long t = (long) (int) x;' или 'var t = (long) (int) x; '). –

ответ

1

Попробуйте использовать этот

long id = Convert.ToInt64(ObjectToConvert) 

и может быть подвержен ошибкам в отличие от TryParse() в тип данных

+0

какая ошибка вы имели в виду? – fasadat

+0

как недействительный листинг, TryParse() обрабатывает это, когда он не может передать значение, он возвращает 0 или вместо ошибки – Jade

+0

, если я уверен, что у него длинный тип, кажется, что безопасно использовать convert.toint64 () – fasadat