■ MarshalAsAttribute 클래스를 사용해 구조체에서 고정 크기 배열 멤버를 만드는 방법을 보여준다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; using System.Runtime.InteropServices; /// <summary> /// 커스텀 구조체 /// </summary> [StructLayout(LayoutKind.Sequential)] public struct CustomStructure { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Public #region Field /// <summary> /// 문자 배열 /// </summary> [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)] public char[] CharacterArray; /// <summary> /// 문자열 /// </summary> [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)] public string String; #endregion } CustomStructure structure = new CustomStructure(); Console.WriteLine(Marshal.SizeOf(structure)); |
※ fixed 키워드를 사용하면 배열의 크기를 고정할 수 있지만, 프로젝트 속성에서 [안전하지 않은 코드 허용] 항목을 설정해야 하지만
※ MarshalAs키워드를 사용해 고정크기 배열(혹은 고정크기 문자열)을 사용할 수 있다.