我们可以将int强制转换为long
为什么以下代码给出了运行时错误。

object o = 9;
long i = (long)o;
Console.WriteLine(i);


我是C#的新手。

最佳答案

根据this bit of documentation


  为了使值类型的拆箱在运行时成功,要拆箱的项目必须是对以前通过对该值类型的实例进行装箱而创建的对象的引用。尝试取消装箱null或对不兼容的值类型的引用将导致InvalidCastException。


因此,您必须先将int拆箱,然后再转换为long(存在隐式转换):

object o = 9;
long i = (int)o;

关于c# - C#长数据类型拆箱问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30831299/

10-10 05:39