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
반응형
'c# > 기타' 카테고리의 다른 글
[c#] 일반화 메소드 , 한 개 함수로 여러 타입 사용 (0) | 2021.12.27 |
---|---|
[c#] 다른 함수에서 배열값 변경 (0) | 2021.12.24 |
[c#] Regex 숫자만 추출 , 문자만 추출 , ismatch (0) | 2021.12.24 |
[c#] DateTime 현재날짜, 현재시간 (0) | 2021.12.16 |
[c#] directoryinfo 경로, 폴더, 파일 (0) | 2021.12.16 |