次のコードを検討してください。
private static void Main(string[] args)
{
short age = 123;
object ageObject = age;
//var intAge = (int)ageObject;//Specified cast is not valid.
int newAge= (short)intAge;
Console.ReadLine();
}
オブジェクトに短い値を割り当てて、再びintにキャストする必要がありますが、これを試みると、次のvar intAge = (int)ageObject;
ようになります:指定されたキャストは無効です。どうしてか分かりません?
Googleで検索した後、shortにキャストしてintに割り当てる必要があることがわかりました:int newAge= (short)intAge;
short にキャストして int に代入する必要があるのはなぜですか?
コンパイラがこの動作をするのはなぜですか?