값에 의한 전달
- 매개변수는 메서드 외부에서 메서드 내부로 데이터를 전달하는 매개체일 뿐이다.
- 그 데이터가 값이든 참조든 상관없이 데이터가 복사된다!
public static void Main()
{
int a = 0;
int b = 1;
int sum = Plus(a, b);
}
public int Plus(int x, int y)
{
}
- 위와 같은 상황에서는, a에는 0, b에는 1이 할당되어있다가 Plus를 선언하는 순간
int x = a; 와 int y = b; 로 값이 복사된다. (값에 의한 전달)
참조에 의한 전달
- ref 키워드를 이용하여
public static void Main()
{
int a = 0;
int b = 1;
Plus(ref a, ref b);
}
public void Plus(ref int x, ref int y)
{
x += y;
}
메소드의 결과를 참조로 반환하기
- 결과를 반환하는 참조 반환 값
- 아래의 메서드에서 m_value는 멤버 변수를 사용했음에 주의.
class TempClass
{
int m_value = 1;
public ref int RefMethod()
{
return ref m_value;
}
}
- 참조로 반환하도록 구현했지만, 호출할 때 ref를 사용하지 않으면 평범한 메서드처럼 값으로 반환한다.
public static void Main()
{
TempClass temp = new TempClass();
int result = temp.RefMethod();
}
- 참조로 넘겨받고 싶다면 아래와 같이 참조할 지역변수와 호출할 메서드의 이름 앞에 ref 키워드를 써야 한다.
public static void Main()
{
TempClass temp = new TempClass();
ref int result = ref temp.RefMethod();
}
출력 전용 매개변수 out
- ref도 똑같이 사용하여 여러 값을 반환할 수 있음.
- 다른 점은 결과를 해당 매개변수에 저장하지 않으면 컴파일 에러를 출력해줌.
public void Divide(int a, int b, out int quotient, out int remainder)
{
quotient = a / b;
remainder = a % b;
}
로컬 함수
- 함수 내부에서 사용할 수 있는 별도의 함수를 선언 가능
- 메서드 밖에서는 쓸 일이 없는 반복적인 구절을 하나로 묶는 경우에 사용
public void Method()
{
int temp = InnerMethod();
int InnerMethod()
{
return 1;
}
}
'🌍 C# Study > C# 기초' 카테고리의 다른 글
C# 복습하기 7) 인터페이스와 추상 클래스 (0) | 2021.04.10 |
---|---|
C# 복습하기 6) 클래스 (0) | 2021.04.09 |
C# 복습하기 4) 코드의 흐름 제어 (역 for문, 역 반복문) (0) | 2021.04.09 |
C# 복습하기 3) 데이터 가공 (0) | 2021.04.09 |
C# 복습하기 2) 문자열 다루기 (0) | 2021.04.08 |