如何正确地从 long 转换为 int?

Ale*_*nko 1 c#

我有这样的方法

        public int foo()
        {
            return (int) MainJsonValues[JsonKeys.DP_PORT.Value];
        }
Run Code Online (Sandbox Code Playgroud)

此方法应进行强制转换并返回此值

我是如何调用这个方法的

myObj.foo()
Run Code Online (Sandbox Code Playgroud)

所以,这很奇怪,因为我们可以看到 value 包含在 Dictionary

您可以在屏幕截图上看到我的调试

在此处输入图片说明

所以,据我所知,这个方法不能转换longint...

错误

在此处输入图片说明

我究竟做错了什么?

Eri*_*ert 8

装箱值类型只能拆箱为拆箱类型可为空的拆箱类型。也就是说,如果你有一个盒装的长,你可以把它拆箱到longlong?,但不能将其任何其他类型。(详情见评论。)

因此,您需要分两步进行转换:

object x = 1L; // boxed long
long y = (long)x; // unboxed
int z = (int)y;
Run Code Online (Sandbox Code Playgroud)