1

可能重复:
如何在 C# 中将结构转换为字节数组?

所以我来自 C++,将结构/类转换为数组,反之亦然,简单明了。我喜欢 C# 和 .Net 框架,但是我注意到像这样的事情很难完成并且令人讨厌。

所以我有一个带有浮点数的结构。我需要将它们传输到字节数组。目前,我将结构“包装”在一个类中,并通过属性公开成员。但是我发现将这个结构复制到一个数组是很困难的。我知道 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;
    };
};

这是做这件事的坏方法吗?我喜欢它,因为它需要一行代码来复制,而且它可能比从每个浮点数中获取单个字节并逐个复制要快一点。

有一个更好的方法吗?

4

0 回答 0