结构到字节数组?

时间:2012-05-01 15:42:31

标签: c# arrays struct copy

  

可能重复:
  How to Convert Structure to byte array in C#?

所以我来自C ++,将struct / class转换为数组,反之亦然,简单明了。我喜欢C#和.Net框架,但是我注意到这样的事情是非常困难和令人讨厌的。

所以我有一个带浮点数的结构。我需要将它们转移到字节数组。目前我在一个类中包含了struct'wrapped',只是通过属性公开了成员。但我发现将此结构复制到数组很困难。我知道“不安全”的代码和C#中的指针通常是一个很大的禁忌,应该避免,但这样做会被认为是一个糟糕的编程习惯吗?

public class LevelOfDetail {
    private LODDataStruct data;

    public float Scale {
        get {
            return data.Scale;
        }
        set {
            data.Scale = value;
        }
    }

    public float Brightness {
        get {
            return data.Brightness;
        }
        set {
            data.Brightness = value;
        }
    }

    public float Sway {
        get {
            return data.Sway;
        }
        set {
            data.Sway = value;
        }
    }

    public float Detail {
        get {
            return data.Detail;
        }
        set {
            data.Detail = value;
        }
    }

    public float Distance {
        get {
            return data.Distance;
        }
        set {
            data.Distance = value;
        }
    }

    public unsafe void CopyTo(void* dest) {
        *((LODDataStruct*)dest) = data;
    }

    public unsafe void CopyFrom(void* src) {
        data = *((LODDataStruct*)src);
    }

    private struct LODDataStruct {
        public float Scale;
        public float Brightness;
        public float Sway;
        public float Detail;
        public float Distance;
    };
};

这样做不好吗?我喜欢它,因为它需要复制一行代码,它可能比从每个浮点数中获取单个字节并逐个复制每个字节要快一点。

有更好的方法吗?

0 个答案:

没有答案