본문 바로가기

Programming/ASP .NET

c#에서 배열을 참조로 넘기기

C를 하다 C#을 하니 다른점이 많다. 지금 다룰 배열도 그 한가지인데

C에서는 포인터로 넘겨버리면 되었지만 여기선 'ref' 를 쓴다.

ref를 빼먹으면 단순 배열 복사가 이루어진다.

byte[] cmd_tmp;
CvtStructToBin(test_struct, ref cmd_tmp);

public int CvtStructToBin(object obj, ref byte[] bin)
    {
        int length = Marshal.SizeOf(obj);

        IntPtr cmd_ptr;

        cmd_ptr = Marshal.AllocHGlobal(length);
        bin = new byte[length];

        Marshal.StructureToPtr(test_struct, cmd_ptr, true);
        Marshal.Copy(cmd_ptr, bin, 0, length);
        Marshal.FreeHGlobal(cmd_ptr);

        return length;

    }