Что я делаю не так:
object j = 149800000;
long h = (long)j;
Нужно из object
конвертировать в long
, в примере выше выходит необработанное исключение типа System.InvalidCastException
:
Заданное приведение является недопустимым.
Если же в переменную j
присвоить большое значение а-ля
object j = 111114082411778;
long h = (long)j;
то всё нормально. Также при простом присвоении переменной типа long
маленького значения тоже все нормально. Я бы и использовал простой Int32
, но вот значения у меня могут быть как маленькие, так и большие, и приходят они в object
.
Нужно в конец добавить суффикс L, так как 149800000
компилятор воспринимает как int
.
object j = 149800000L;
long h = (long)j;
можно еще так
object j = 149800000;
long h = (long)(int)j;
Я бы рекомендовал использовать 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()
возвращает строковое представление текущего объекта, данный метод есть у всех объектов, что упрощает работу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста в чём ошибкаПытаюсь использовать рекурсивный метод на самодельном односвязном списке, но появляется ошибка System
Взял код с официального сайта и он не работает (убрал немного лишнего);
При регистрации в базу данных сохраняется пустая строка когда выполняю $user->save()Причём валидацию проходит нормально