매개변수
매개변수(Parameter)
파라미터 값이라고도 부름
이 매개변수는 메소드의 구성 중 하나
void 메소드(매개변수)
매개변수가 없이 사용할 수 있는 메소드가 있긴 하나
매개변수가 없는 메소드는 거의 없다
그 이유는 어떠한 목적을 가지고 메소드를 만드는데에 목적을 이루려면
목적이 생기기 위한 어떠한 계기라는게 있다.
이는 어떠한 값을 받아서 그 값으로 무언가 결과를 얻어 내기 위해서 생김.
그렇기에 매개변수는 왠만하면 메소드에 들어가 있음.
없다면 출력을 위해서 사용하는 메소드 정도.
class operation
{
public static int Plus(int a, int b)
{
return a + b;
}
}
이때 int a, b는 하나의 매개체가 됨. 바로 파라미터 값.
이 값은 메소드 Plus에 값의 정보를 준다.
이 개념을 보통 Call by Value 라고 함.
한 마디로 int a 와 b 의 메모리 공간에 값을 제공하지 메모리 공간 자체는 제공하지 않는다.
오직 받은 값으로 연산을 해서 반환을 하는게 일반적인 매개변수.
그래서 특별한 기능을 가진 참조라는게 존재하는데
이 참조는 메로리 공간 자체를 제공해주게 만들 수 있다.
참조의 키워드는 ref reference의 줄인 말.
이 참조 키워드를 사용해서 매개변수를 전달하는 행위를
Call by Reference 라고 함.
그리고 주의할 점이 있는데 매개변수를 줄 때 초기화를 하지 않으면 문법 오류가 남.
실제로 메모리 공간에 영향을 줌.
메소드에서 a의 값을 변경 했을 뿐임.
이를 증명하는 문제로는 보통 스왑
두 수를 서로 바꾸는 문제로 많이 나옴.
참조된 매개변수까지 알아봤으니
이제 메소드의 결과를 참조해보겠음
참조 지역 변수
이 참조 지역 변수는 리턴값을 참조하는 행위를 말함.
이 참조 지역 변수는 결과값을 어느 한곳에서 수정을 한다면 모두 바뀌게 하는 기능이 있다.
예를 들어서 어떤 유저가 RPG게임에서 히든피스를 발견해서 모든 아이템이 10%할인 된다고 생각해보자
private로 선언된 변수에 외부에서 직접적으로 접근해서 값을 바꿀 수 있음
이는 클래스의 한정자를 배우게 되면 알게 됨.
이러한 특징을 가진 변수를 참조 지역 변수라고 함.
출력 전용 매개변수
출력 전용 매개변수는 키워드 out을 사용하는데
역할은 ref와 비슷하지만 몇 가지 장점이 있음
우선 "출력 전용" 이라는 단어를 생각해보자면 이 매개변수는 오로지 출력을 위해 존재하는 키워드 같다. 즉, 읽기가 안됌.
에러가 나는 이유는 출력 매개변수인 out의 사용법이 잘못 됐기 때문.
//-------------------------------------------------------------------------------------------//
키워드 out
argument 값은 초기화를 하지 않아도 된다.
출력 전용 매개변수라서 읽기 작업을 하지 못한다.
출력으로 사용된 매개변수는 쓰기 작업을 해줘야한다.
------------------------------------------------------------------------------------------------
키워드 ref
argment 값은 초기화를 해야한다.
//------------------------------------------------------------------------------------------//
출력 전용 매개변수인데 OutTest 메소드에서는 읽기를 시도했다.
따라서 컴파일 에러가 나는 것.
또한 출력을 위해서 사용된 out 변수의 쓰기 작업을 하지 않으면 에러가 남.
'C#' 카테고리의 다른 글
C# 로컬 함수 (0) | 2022.06.01 |
---|---|
C# 메소드 오버로딩 (0) | 2022.06.01 |
C# 연산자 (0) | 2022.05.02 |
C# 메소드 (0) | 2022.04.29 |
C# 문자열 보간, 서식, 분할, 변형, 찾기 (0) | 2022.04.27 |