c# 캐릭터 배열 char[]를 아규먼트로 넘길 때 주의할 점

String.ToCharArray는 인스턴스를 만든다. 아래의 코드에서 캐릭터 배열은 초기화되지 않았지만 제대로 실행된다.

char[] chars;

chars = "abcde".ToCharArray();

캐릭터 배열은 레퍼런스 타입이므로 이걸 아규먼트로 받은 메서드에서 그 값을 수정하면 호출한 메서드에도 반영된다.

private void button1_Click(object sender, EventArgs e)
{
    char[] chars = new char[5];

    Method1(chars);

    Text = new string(chars); // a
}

private void Method1(char[] chars)
{
    chars[0] = 'a';
}

String.ToCharArray를 이용하면 chars는 새로운 인스턴스를 갖게 되므로 호출한 메서드에는 반영되지 않아서 널 문자 다섯 개만 출력된다.

private void Method1(char[] chars)
{
    chars = "abcde".ToCharArray();
}