Ich habe das:
Code: Select all
void Write(Buffer buffer, ref readonly T value, int offset)
where T : unmanaged
{
byte* valuePtr = (byte *)Unsafe.AsPointer(in value);
NativeMemory(valuePtr, buffer.Pointer + offset, sizeof(T));
}
- Es ist ein blittable-Werttyp (erzwungen durch die nicht verwaltete Einschränkung für T).
- Da es ein Parameter ist, sollte er auf dem Stapel liegen und nicht vom GC verschoben werden (also ich). nehmen an)
Mir ist bewusst, dass ich „Fixed“ verwenden kann. Aber ich bin eher gespannt, ob ich mit meiner Denkweise an dieser Stelle richtig liege.
Code: Select all
fixedCode: Select all
void Write(Buffer buffer, ref readonly T value, int offset)
where T : unmanaged
{
fixed (T* valuePtr = &value)
{
NativeMemory(valuePtr, (byte*)buffer.Pointer + offset, sizeof(T));
}
}
Mobile version