새소식

C#

메소드 내 인자 전달 방식 - by Value, Reference, Output

  • -

 

 

1. by Value

값을 직접 준다.

1
2
3
4
5
6
7
8
static void Test(int x) {
  x = 8;
}
static void Main() {
  int a = 5;
  Test(a);
  Console.WriteLine(a); 
}
cs

직접 값을 전달하여 a값인 5가 출력된다.

 

 

 

 

 

 

2. by Reference

쉽게 생각해서 변수가 전달된다고 생각

1
2
3
4
5
6
7
8
9
10
11
static void Sqr(ref int x)
{
  x = x * x;
}
static void Main()
{
  int a = 3;
  Sqr(ref a);
 
  Console.WriteLine(a); // Outputs 9
}
cs

ref라는 키워드를 사용하여 참조에 사용된다. 그래서 3을 주고 Sqr 내에서 3*3을 계산하여 9가 출력된다.

(ref 키워드는 method parameter에 메모리 주소를 전달하여 메소드가 실제 변수에 대해 작동할 수 있게 한다.
ref 키워드는 메소드를 정의할 때와 호출할 때 모두 사용된다.)

 

 

 

 

 

 

3. by Output

1
2
3
4
5
6
7
8
9
10
11
static void GetValues(out int x, out int y)
{
  x = 5;
  y = 42;
}
static void Main(string[] args)
{
  int a, b;
  GetValues(out a, out b);
  //Now a equals 5, b equals 42
}
cs

out이라는 키워드를 사용하여 말 그대로 함수 내의 값을 출력해준다.

 

 

 

 

 

 

'C#' 카테고리의 다른 글

배열 특성(Array Properties)  (548) 2020.11.10
get, set 속성(Property)  (548) 2020.11.10
인자(argument)순서 바꾸기  (548) 2020.11.09
선택적 매개변수  (616) 2020.11.09
? 연산자 - 코드를 효율적으로 짜는 방법  (547) 2020.11.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.