2015-07-31 3 views
3

У меня есть код следующим образом:C#: Невозможно привести объект типа «System.Int64» к типу «System.Int32»

Dictionary<object, object> dict = ... 
Color = (int)dict.GetValue("color"); 

Когда я преобразовать цвет к междунар, я получаю следующее исключение :

System.InvalidCastException: Невозможно привести объект типа 'System.Int64' к типу 'System.Int32'.

Я не уверен, почему я не могу просто бросить от длинного до целого. Я знаю, что значение меньше 0xFFFFFF (24 бит), так как это цвет.

Я пробовал использовать unchecked, но это тоже не помогло.

+0

Ошибка в том, что ошибка, хотя она немного запутанна, потому что '(x) expr' является либо * cast *, либо * преобразованием * в зависимости от типа выражения. Корректировка будет '(int) (long) dict.GetValue (" color ")', которая соответствует '(преобразованию) ((cast) obj)'. – user2864740

ответ

7

Вы должны сначала указать значение object.

Dictionary<object, object> dict = ... 
Color = (int)(long)dict.GetValue("color"); 
Смежные вопросы