是否有可能在C#中快速取消选中结构体?

时间:2018-05-11 14:13:03

标签: c# .net performance pointers struct

假设您有两个具有完全相同内存布局的结构。是否可以在C#/ .NET中从一个到另一个进行非常快速的未经检查的内存转换?

//my code base
[StructLayout(LayoutKind.Sequential)]
public struct VectorA
{
    float x;
    float y;
    float z;
}

//defined by a third party library
[StructLayout(LayoutKind.Sequential)]
public struct VectorB
{
    float a;
    float b;
    float c;
}

//somewhere else in my code
var vectorA = new VectorA();

//then calling a method from the library
MethodFromThirdPartyLibrary((VectorB)vectorA); //compiler error

当然,作为一种分配数据字段并在内存中创建新副本的方法,它应该更快。

另外:3d矢量只是一个例子,矩阵的问题是16个浮点数和Vector2,Vector4,......

编辑:使用更多评论和更好的使用示例改进代码。

0 个答案:

没有答案