IT/c#
c#에서 배열을 매개변수로 넘길 때 주의 점
-June-
2017. 9. 11. 19:30
C#에서 배열을 매개변수로 넘길 때 '어떤 자료형의 배열'이던 간에 그 배열의 사이즈만큼 복사해서 메모리에 잡힌다.
예)
public void Array(int[] Array) {}
main()
{
int[] a = new int[5];
Array(a);
}
이 경우 int형 배열의 사이즈만큼 복사해서 매개변수를 넘겨준다.
이 것은 참조타입인 클래스 배열도 마찬가지다.
클래스 배열을 매개변수로 넘길 시, 그 클래스 배열의 길이와 사이즈 만큼 힙 영역에 '따로' 잡혀서 복사가 일어난다.
이 경우 같은 메모리를 참조하기 위해서 ref 키워드를 붙여준다.
예)
public void Array(ref int[] array) {}
main()
{
int[] a = new int[5];
Array(ref a);
}