5 Aralık 2017 Salı

StructLayout Anotasyonu

Explicit
Şöyle yaparız.
[StructLayout(LayoutKind.Explicit)]
public struct RawInput
{
  [FieldOffset(0)]
  public int A;
  [FieldOffset(4)]
  public int B;

  [FieldOffset(8)]
  public int C;
}
Sequential
Şöyle yaparız.
[StructLayout(LayoutKind.Sequential)]
internal struct RawInput
{
  ushort A;
  ushort B;
  IntPtr C;
}
Padding olmasın istersek şöyle yaparız.
[StructLayout(LayoutKind.Explicit)]
public struct MyStruct
{
  [FieldOffset(0)]
  public ushort a;
  [FieldOffset(2)]
  public uint b;
  [FieldOffset(6)]
  public uint c;
  [FieldOffset(10)]
  public ushort d;
}

Hiç yorum yok:

Yorum Gönder