Приведение типа объекта в C #

Сегодня у меня возникла проблема, и я не совсем понял, почему это не сработает.

Следующий пример кода приведет к сбою:

static void Main(string[] args)
{
     int i32 = 10;
     object obj = i32;
     long i64 = (long)obj;
}

Это приведет к InvalidCastException. Почему это не работает? Разве C # недостаточно умен, чтобы знать, что объект действительно имеет тип int?

Я уже придумал обходной путь, но мне любопытно, почему приведенный выше пример кода вообще не работал.

Спасибо, Тим

7
задан Tim 12 October 2010 в 13:30
поделиться