ref out 사용 방법

3103 단어
현재 우리는 두 개의 값을 교환해야 한다. 프로그램에서 자주 사용하기 때문에 함수에 봉인해야 한다
코드는 다음과 같다.
1 /// <summary>
2 /// 2
3 /// </summary>
4 static public void Swap(int x1, int x2)
5 {
6 int temp = x1;
7 x1 = x2;
8 x2 = temp;
9 }

두 개의 값을 인쇄합니다
1  static void Main(string[] args)
2 {
3 int x1 = 10;
4 int x2 = 20;
5 Swap(x1, x2);
6 Console.WriteLine("x1={0},x2={1}", x1, x2);
7 }

결과는 다음과 같습니다.
x1=10
x2=20
두 개의 수가 변하지 않았다. 왜냐하면 우리가 함수에 전달한 것은 x1, x2의 복제품이기 때문에 swap 함수 내부의 복제품의 변화는main 함수의 x1, x2의 값(값 변수가 함수의 매개 변수를 할 때 전달하는 것은 모두 값의 복제)에 영향을 주지 않는다. 만약에 우리가 함수 내부의 매개 변수 변화가 외부에 직접적인 영향을 미치려고 한다면 우리는 키워드ref(reference-인용)를 사용해야 한다.
이제 우리 팀의 프로그램이 조금 바뀌었습니다.
 
1 /// <summary>
2 /// 2
3 /// </summary>
4 static public void Swap(ref int x1,ref int x2)
5 {
6 int temp = x1;
7 x1 = x2;
8 x2 = temp;
9 }

다음 두 개의 값을 인쇄합니다.
1  int x1 = 10;
2 int x2 = 20;
3 Swap(ref x1, ref x2);
4 Console.WriteLine("x1={0},x2={1}", x1, x2);
5 Console.ReadKey();

결과는 다음과 같습니다.
x1=20
x2=10
요약:
ref와out의 주요 차이점은 다음과 같다.net에서 함수는 단지 하나의 반환값만 있을 수 있지만, 때때로 우리는 함수가 여러 개의 반환값을 반환해야 하는데, 어떻게 해야 합니까?그래서 out는 쓸모가 있다. 그리고 out는 함수 외에 부여된 값도 헛수고이다. 이것은 반환 값이 부여될 필요가 없는 것과 같다. 그 값은 데이터를 반환하는 것을 책임진다. out 함수는 함수에서 반드시 부여받아야 한다. 이것은 함수의 반환 값 행위와 매우 비슷하다.사실 그들은 같은 일이다
한편,ref는 값 변수를 전달된 부본에서 자신으로, 즉 값 전달을 인용 전달으로 바꾸는 것이다...
ref는 먼저 초기화해야 합니다. 인용이기 때문에 먼저'있다'고 해야 인용할 수 있고 out는 내부가 외부에 값을 부여하기 때문에 초기화할 필요가 없고 외부 초기화도 소용없습니다.ff는 장면 내부에서 외부의 값을 바꾸고out는 내부에서 외부 변수에 값을 부여하며out는 함수에 여러 개의 반환 값이 있는 장소에 사용된다.사례: 두 변수의 교환;int.TryParse.
예: int.TryParse 함수
구체적인 코드는 쓰지 않겠습니다.

좋은 웹페이지 즐겨찾기