2 c#
考虑这段代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
我必须为 object 分配一个短值,然后再次强制转换为 int ,但是当我尝试这样做时:var intAge = (int)ageObject;我得到:指定的强制转换无效。我不知道为什么?
在谷歌搜索后我发现应该转换为short并分配给int:int newAge= (short)intAge;
为什么我们应该转换为short并分配给int?
为什么编译器有这种行为?
该失败是运行时错误。
原因是该age值已被装箱到一个对象中;将其拆箱为不正确的类型 ( int) 是失败的 - 这是一个short.
您注释掉的行上的强制转换是拆箱操作,而不仅仅是强制转换。
| 归档时间: |
|
| 查看次数: |
3075 次 |
| 最近记录: |