Конвертирование из object в long

366
21 марта 2017, 10:28

Что я делаю не так:

object j = 149800000;
long h = (long)j;

Нужно из object конвертировать в long, в примере выше выходит необработанное исключение типа System.InvalidCastException:

Заданное приведение является недопустимым.

Если же в переменную j присвоить большое значение а-ля

object j = 111114082411778;
long h = (long)j;

то всё нормально. Также при простом присвоении переменной типа long маленького значения тоже все нормально. Я бы и использовал простой Int32, но вот значения у меня могут быть как маленькие, так и большие, и приходят они в object.

Answer 1

Нужно в конец добавить суффикс L, так как 149800000 компилятор воспринимает как int.

object j = 149800000L;
long h = (long)j;

можно еще так

object j = 149800000;
long h = (long)(int)j;
Answer 2

Я бы рекомендовал использовать Int64.TryParse - преобразует строковое представление числа в эквивалентное ему 64-битовое целое число со знаком. Возвращает значение, указывающее, успешно ли выполнено преобразование. Вот и пример преобразования:

object j = 149800000;
long number;
bool result = Int64.TryParse(j.ToString(), out number);
if (result)
{
    // успешно преобразовали. В number - результат
}
else
{
    // что-то пошло не так
}

Или же использовать Convert.ToInt64 - преобразует заданное строковое представление числа в эквивалентное 64-битовое целое число со знаком. Немного менее безопасный вариант преобразования:

object j = 149800000;
long result = Convert.ToInt64(j);

Если тут не удастся преобразовать - словим исключение. Метод ToString() возвращает строковое представление текущего объекта, данный метод есть у всех объектов, что упрощает работу.

READ ALSO
Ошибка system.nullreferenceexception

Ошибка system.nullreferenceexception

Подскажите пожалуйста в чём ошибкаПытаюсь использовать рекурсивный метод на самодельном односвязном списке, но появляется ошибка System

330
Не выводится изображение

Не выводится изображение

Взял код с официального сайта и он не работает (убрал немного лишнего);

290
Сохраняет пустые данные с помощью model->save() в Yii2

Сохраняет пустые данные с помощью model->save() в Yii2

При регистрации в базу данных сохраняется пустая строка когда выполняю $user->save()Причём валидацию проходит нормально

703
Получить имена методов

Получить имена методов

Вывод из var_dump()

262