byte[]
構造体に変換する方法が2つ見つかりました。しかし、これら2つの方法に違いがあるかどうかはわかりませんか? 誰がどちらが優れているか(パフォーマンスなど)を知ることができますか?
#1:
public static T ByteArrayToStructure<T>(byte[] buffer)
{
int length = buffer.Length;
IntPtr i = Marshal.AllocHGlobal(length);
Marshal.Copy(buffer, 0, i, length);
T result = (T)Marshal.PtrToStructure(i, typeof(T));
Marshal.FreeHGlobal(i);
return result;
}
#2:
public static T ByteArrayToStructure<T>(byte[] buffer)
{
GCHandle handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
T result = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
handle.Free();
return result;
}