[StructLayout(LayoutKind.Explicit)]
public struct struct1
{
[FieldOffset(0)]
public byte a; // 1 byte
[FieldOffset(1)]
public int b; // 4 bytes
[FieldOffset(5)]
public short c; // 2 bytes
[FieldOffset(7)]
public byte buffer;
[FieldOffset(18)]
public byte[] shaHashResult; // 20 bytes
}
void DoStuff()
{
struct1 myTest = new struct1();
myTest.shaHashResult = sha256.ComputeHash(pkBytes); // 20 bytes
byte[] newParameter = myTest.ToArray() //<-- How do I convert a struct
// to array without a copy?
}
如何将数组myTest
转换为? 由于我的对象很大,我不想复制该数组(memcopy等)
ComputeHash
的实现中有一个语句,它本质上是new Byte[20]
。这将总是在GC堆上分配一个新数组,意味着需要执行一次复制。 - codekaizen