我正在尝试使用对象处理程序,我可以很好地将这些东西放入内存中。但是当我再次查找物体时,我会返回:
object(object[,]) 或
object(double[,]) 如何在c#中解压缩?
object(double[,]) boxedobj = ....
double[,] unboxedobj = unbox(boxedobj);理想情况下,我希望以一种通用的方式这样做,这样无论类型是double[]还是double,还是object,等等。
发布于 2013-10-24 14:12:38
F# unbox函数几乎只是对您指定的任何其他类型进行强制转换。在C#中,可以这样编写:
static R Unbox<R>(object anything) {
return (R)anything;
}因此,在使用double[,]的情况下,您需要如下所示:
var array = (double[,])boxed;在大多数情况下,unbox<'R> anything只会转换为使用(R)anything进行转换。唯一不起作用的情况是在另一个泛型方法中,并且在两个泛型类型之间进行转换时。在这种情况下,您需要先转到object (以确保值是装箱的):
static R Unbox<R, T>(T anything) {
return (R)(object)anything;
}发布于 2013-10-24 13:58:17
除非我忽略了您的观点,否则object之间的转换应该自动为您选择方框/开箱值类型(数组不是值类型,BTW):
double d = 0.0; // not boxed
object obj = d; // boxed
double d2 = (double)obj; // unboxed更大的问题是--为什么你关心它是否被装箱?
https://stackoverflow.com/questions/19567978
复制相似问题