전기과 프로그래머 문외한 학생이 C#을 공부하는 반은 10일째~ 반환값의 참조는 ~

정면


이 보고서는'독학 C#'에서 배운 내용을 스카이프 학습회의 활동일지로'서면으로 출력한다','전기학과 학생들의 성과를 만들기 위한 의식적인 학과(웃음)'의 보고서다.완전 초보자이기 때문에 공부회에 참가한 선배들로부터 갖가지 구토를 받으면서 쓰고 있다.그래서 선배들의 눈에서 벗어난 오자 등이 있지만 꼭 토해내서 공부하게 해주세요.구직이 끝났기 때문에 반딧불이 빛을 흘릴 뻔했다.

스타트 라인


반환 값 참조 및 전달


C#의 반환 값을 호출자에게 전달할 수도 있습니다.인용 전달된 그룹 요소의 예시를 업데이트합니다.우선 참조 반환 값의 흐름을 억제해 보세요.
using System;

namespace returnref
{
    class Passreturn{
        public ref int Returnref(int [] data){
            return ref data[0];
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var data = new [] { 1, 2, 3};
            var p = new Passreturn();
            ref int num = ref p.Returnref(data);//refをポインタモードとしてみれば、答えの解釈としてわかりやすかった。
            // アドレスのコピーとして考えることができる。そしてそれを参照しているという解釈?

            num = 10;
            Console.WriteLine(num);//Main関数のnumを参照しているため
            Console.WriteLine(data[0]);//アドレスが更新されたため。

        }
    }
}
ref int num = ref p.Returnref(data);
하지만
int num = p.Returnref(data);환경과 혼합되어야 하는 각 반사광선은 환경 샘플링을 한다.
그러나 값은 의외의 행동을 초래할 수 있다.조심해.

초기 값은 0입니다.

데이터 [0]의 주소를 전송하고 값을 복사합니다.

num 값이 10으로 업데이트됨
출력은 다음과 같습니다.
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
10
1

다음은 본래의 동작이 어떤 의도로 진행되었는지 확인해 봅시다.



초기 값이 다릅니다.

처음에 데이터 [0]의 주소를 복사하고 값을 복사합니다.그러나 이 주소는 끈으로 변하지 않는다는 점이 다르다.바늘 패턴과 같은 생각으로 생각하면num에서 데이터[0]의 주소와 값이 연합된 것을 고려하면 이해하기 쉽다.
(shiracamus 씨! 지적해 주셔서 감사합니다! 2018.07.09,09:13 변경되었습니다)

따라서 출력은 다음과 같다.
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
10
10
의 규격화 거리의 멱 함수.이걸 적용하려면 시간이 더 걸릴 것 같아!

후기


그래서 최근에도 자바를 쓰기 시작했고 C#에 대한 이해가 더욱 깊어졌다.
C#"사람을 키우는 언어구나"를 다시 한 번 느낀다.
C 언어 바늘의 해석이 틀렸을 수도 있어요.
단지 개인의 해석일 뿐, 그다지 좋지 않을 것 같으니, 지적해 주시면 잘 부탁드립니다!

좋은 웹페이지 즐겨찾기