c#/기타

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

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

만약에 !a = "A랍니다" 라는 변수가 있었는데

test() 함수에서 !a를 받아서 !a = "B랍니다" 라고 하면 !a의 값이 바뀌고 싶을 때 사용한다.

 

label1 에는 정의를

label2에는 일반적인 함수를 다녀왔을 때 값을

label3은 ref 를 받는 함수를 다녀왔을 때 값을 표현해본다. 

 

 

        private void Form1_Load(object sender, EventArgs e)
        {
            string s = "A랍니다.";
            label1.Text = s;

            test(s);
            label2.Text = s;

            test(ref s);
            label3.Text = s;

        }

        public void test(string s)
        {
            s = "B입니다.";
        }

        public void test(ref string s)
        {
            s = "B입니다.";
        }

 

Foam이 Load 되는 순간 s라는 변수는 "A랍니다" 였다.

그리고 일반적으로 사용하는 string을 받는 text(string s) 함수를 다녀왔을 때 form_load의 변수의 값에 영향을 주지 않는다. 따라서 label2는 "A랍니다" 의 결과가 나올 것이다.

 

그런데 어떤 함수에서 변수를 변경하면 그 값이 바꼈으면 좋겠을 때 ref키워드를 사용한다.

 

test(ref string s)를 받고 s의 값을 변경하면 form_load에서 s의 변수가 값이 바뀐다.

728x90
반응형