我试图使用对象处理程序,我有这个工作正常,把东西放在内存中.但当我再次查看对象时,我会回复:
object(object[,])
Run Code Online (Sandbox Code Playgroud)
要么
object(double[,])
Run Code Online (Sandbox Code Playgroud)
如何在c#中取消装箱?
object(double[,]) boxedobj = ....
double[,] unboxedobj = unbox(boxedobj);
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想以通用方式执行此操作,以便无论tybe是double []还是double [,]或object [,]等都无关紧要
F#unbox函数几乎只是对你指定的任何其他类型进行强制转换.在C#中,这可以这样写:
static R Unbox<R>(object anything) {
return (R)anything;
}
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下double[,]你需要这样的东西:
var array = (double[,])boxed;
Run Code Online (Sandbox Code Playgroud)
在大多数情况下unbox<'R> anything,只会转换为使用铸造(R)anything.其中,但这唯一的情况下无法正常工作是当你在另一个通用的方法,你是两个通用类型间铸造.在这种情况下,您需要先转到object(以确保该值已装箱):
static R Unbox<R, T>(T anything) {
return (R)(object)anything;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |