C# - Проблемы с boxing / unboxing / typecasting ints. Я не понимаю

Мне трудно понять это. Рассмотрим следующий пример:

protected void Page_Load(object sender, EventArgs e)
{
    // No surprise that this works
    Int16 firstTest = Convert.ToInt16(0);
    int firstTest2 = (int)firstTest;

    // This also works
    object secondTest = 0;
    int secondTest2 = (int)secondTest;

    // But this fails!
    object thirdTest = Convert.ToInt16(0);
    int thirdtest2 = (int)thirdTest;  // It blows up on this line.
}

Конкретная ошибка, которую я получаю во время выполнения: Specified cast is not valid. Если я QuickWatch (int)thirdTest в Visual Studio, я получаю значение Cannot unbox 'thirdTest' as a 'int'.

Что за чертовщина здесь происходит?

8
задан Jeremy Wiggins 7 January 2012 в 17:12
поделиться