ref out 사용 방법
코드는 다음과 같다.
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 함수
구체적인 코드는 쓰지 않겠습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.