C# 에서 C 언어 처럼 pointer 개념을 사용할 수 있다. pointer 개념은 네트워크 패킷 보낼때 많이 사용한다.
Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);
unsafe 라고 compiler 에 지시자로 알려주어야 한다.
public void GetBuffer(byte[] outBuffer)
{
if (0 == outBuffer.Length)
outBuffer = new byte[PACKET_MAX_LEN];
unsafe
{
fixed(byte* fixed_buffer = outBuffer)
{
Marshal.StructureToPtr(this, (IntPtr)fixed_buffer, false);
}
}
}
하지만 unsafe 한 항목이어서 컴파일이 안되서 아래처럼 Allow unsafe code 옵션을 설정해 주면 컴파일이 된다.