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();
}