출처
"바쁜 개발자들을 위한 C#"
1. C#에서 메소드에 파라메터를 이용해 값을 전달하는방식에는 2가지가 있다.
첫번째 -파라메터를 전달하는 방법매개변수를 통해 , 전달되는 인자값 자체에 접근하여 사용하는것이아니라 해당 값을 복사하여,사용하는 방식.
static void addOne(int i){ ~~}
두번째-참조(레퍼런스)를 전달하는 방식
위방식은 C언어에서 포인터변수를 넘겨주는것과 유사한 방법이다. 변수값을 전달하는것이아니라 변수를 참조(변수가 저장된 참조 혹은 주소값을 넘겨주는것)이다
"참조한다"-> 해당 메모리공간에 직접 접근한다 라는 의미"메소드가 전달하는것은, 변수의 내용이 아닌 메모리 내부의 변수의 위치 즉, 주소값을 의미한다."
예제
C#에서는 참조를 위한 키워드가 ref 임에 유의
함수선언
static void addOneToRefParm(ref int i){ i=i+1; //참조로 넘겨받았기 때문에, 연산과 동시에 참조값 자체도 변경된다 Console.WriteLine(" i값은"+i);
}
실행
int test=20;addOneToRefParam(ref test); //참조값을 넘겨줄때 키워드 ref를 사용함을 유의Console.WriteLine("test is:"+test);
결과i is:21
test is:21
"바쁜 개발자들을 위한 C#"
1. C#에서 메소드에 파라메터를 이용해 값을 전달하는방식에는 2가지가 있다.
첫번째 -파라메터를 전달하는 방법매개변수를 통해 , 전달되는 인자값 자체에 접근하여 사용하는것이아니라 해당 값을 복사하여,사용하는 방식.
static void addOne(int i){ ~~}
두번째-참조(레퍼런스)를 전달하는 방식
위방식은 C언어에서 포인터변수를 넘겨주는것과 유사한 방법이다. 변수값을 전달하는것이아니라 변수를 참조(변수가 저장된 참조 혹은 주소값을 넘겨주는것)이다
"참조한다"-> 해당 메모리공간에 직접 접근한다 라는 의미"메소드가 전달하는것은, 변수의 내용이 아닌 메모리 내부의 변수의 위치 즉, 주소값을 의미한다."
예제
C#에서는 참조를 위한 키워드가 ref 임에 유의
함수선언
static void addOneToRefParm(ref int i){ i=i+1; //참조로 넘겨받았기 때문에, 연산과 동시에 참조값 자체도 변경된다 Console.WriteLine(" i값은"+i);
}
실행
int test=20;addOneToRefParam(ref test); //참조값을 넘겨줄때 키워드 ref를 사용함을 유의Console.WriteLine("test is:"+test);
결과i is:21
test is:21
-결과를 위한 참조전달 방식 (C#에서 out이 의미하는 바는 무엇인가?)
"참조를 이용, 메소드에 전달되면, 메소드에서, 해당 참조에대해 직접 접근할수 있음으로자유롭게 읽고 쓰는것이 가능하다."
전달 받은 참조값이, 오직 결과를 담는( 쓰는) 역할에만 쓰이도록 하고싶다면, out이라는 키워드를이용한다
함수정의 static void readPerson( out String name, out int age){name=readString("Enter your name");age=readInt("Enter your age",0,100);
}
메인 함수 호출
string name;int age;//위와 같이 단순히 변수를 선언해주고
//아래와 같은 키워드를 통해, 위변수를 참조하도록하되//단순히,해당 변수의 위치에 접근해,값을 할당할때만 사용가능하도록 한다.readPerson(out name,out age);
"참조를 이용, 메소드에 전달되면, 메소드에서, 해당 참조에대해 직접 접근할수 있음으로자유롭게 읽고 쓰는것이 가능하다."
전달 받은 참조값이, 오직 결과를 담는( 쓰는) 역할에만 쓰이도록 하고싶다면, out이라는 키워드를이용한다
함수정의 static void readPerson( out String name, out int age){name=readString("Enter your name");age=readInt("Enter your age",0,100);
}
메인 함수 호출
string name;int age;//위와 같이 단순히 변수를 선언해주고
//아래와 같은 키워드를 통해, 위변수를 참조하도록하되//단순히,해당 변수의 위치에 접근해,값을 할당할때만 사용가능하도록 한다.readPerson(out name,out age);
Comments
Post a Comment