c#/기타

[c#] 다른 함수에서 배열값 변경

byH 2021. 12. 24. 11:42
728x90
반응형

c#의 자료형에는 두 가지 타입이 있는데,

값 형식(Value type) [실제 데이터 값을 저장하는 형식] : int , double, char, bool 등

참조 형식(reference type) [변수가 값이 저장되어 있는 곳의 위치를 저장] : object, string, dynamic, class  등

 

값 형식은 다른 함수에서 값을 변경한다고 값이 변경되지 않는다. 

그 때는 ref 키워드를 사용해서 변경해주는데 그건 하단 링크를 참조하자. 

https://hengs.tistory.com/50?category=1063480 

 

[c#] ref , 다른 함수에서 변수값 변경

만약에 !a = "A랍니다" 라는 변수가 있었는데 test() 함수에서 !a를 받아서 !a = "B랍니다" 라고 하면 !a의 값이 바뀌고 싶을 때 사용한다. label1 에는 정의를 label2에는 일반적인 함수를 다녀왔을 때 값

hengs.tistory.com

 

그러나 배열은 참조형이기 때문에 변경이 바로 가능하다.

 private void Form1_Load(object sender, EventArgs e)
        {
            string[] arr = { "가", "나", "다" };
            label1.Text = arr[0];

            test(arr);
            label2.Text = arr[0];

            test(arr);
            label3.Text = arr[0];

        }

        public void test(string[] arr)
        {
            arr[0] = "가1";
        }

        public void test2(string[] s)
        {
            s[0] = "가1";
        }

string[]를 하나 선언하여 [0]번에 "가"라는 값을 주었다.

그리고 test에 해당 arr를 전달하여 test 함수에서 arr[0] 값을 "가1"로 변경하였다.

test2는 같은 변수명으로 받지 않아도 된다는 것을 test하기 위해 진행하였다. 

배열은 참조형이기 때문에 ref 키워드 없이도 값이 변경된 것을 확인할 수 있다. 

728x90
반응형