考虑这段代码:
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;
我得到:指定的转换无效。我不知道为什么?
在谷歌搜索后,我发现应该转换为short并分配给int:int newAge= (short)intAge;
为什么我们应该转换为short并分配给int?
为什么编译器有这种行为?