C#: Unable to cast object of type ‘System.Int64’ to type ‘System.Int32’

Published

I have code as follows:

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

When I convert the Color to an int, I get the following exception:

System.InvalidCastException: Unable to cast object of type
‘System.Int64’ to type ‘System.Int32’.

I am not sure why I can’t just cast from a long to an int. I know for a fact that the value is less than 0xFFFFFF (24 bits) since it is a color.

I tried using unchecked but that didn’t help either.

Source: Xamarin.ios Questions

Published
Categorised as Uncategorised Tagged , , ,

Answers

If you don’t know the original type, the following idiom may be more convenient.

public T Get<T>(string key)
{
    return (T) Convert.ChangeType(_dict[key], typeof(T), CultureInfo.InvariantCulture);
}

Mariam Schiller

Leave a Reply

Your email address will not be published. Required fields are marked *

Still Have Questions?


Our dedicated development team is here for you!

We can help you find answers to your question for as low as 5$.

Contact Us
faq