|
1
3
这种代码永远不能以通用方式工作。它依赖于一个硬假设,即T的内存布局是可预测和一致的。只有当T是一个简单的值类型时才是这样。暂时忽略endianness。如果T是一个引用类型,那么你就死定了,你将复制永远无法反序列化的跟踪句柄,你必须给T结构约束。
框架中已经有很多类可以完成您正在做的事情。最接近的匹配是。NET 4.0 MemoryMappedViewAccessor类。它需要做同样的工作,使原始字节在内存映射文件中可用。那里的主力是系统。运行时。互操作服务。SafeBuffer类,看一看反射器。不幸的是,您不能只复制类,它依赖CLR进行转换。再说一次,离上市只有一周了。 |
|
|
2
0
|
|
|
3
0
查看我对相关问题的回答: What is the fastest way to convert a float[] to a byte[]? 在其中,我临时将浮点数组转换为字节数组,而无需内存分配和复制。 不幸的是,这种解决方案本身并不适合泛型。然而,你 将这种黑客技术与代码生成技术结合起来解决您的问题。 |
|
|
4
0
看这篇文章 Inline MSIL in C#/VB.NET and Generic Pointers 获取梦想代码的最佳方法:) |