可能重复:
如何在 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;
};
};
这是做这件事的坏方法吗?我喜欢它,因为它需要一行代码来复制,而且它可能比从每个浮点数中获取单个字节并逐个复制要快一点。
有一个更好的方法吗?