C# 기초 : 가변길이 매개 변수 , 명명된 매개 변수
C++를 하다가 넘어 왔는데, 다른 부분이 조금씩 보이기 시작
가변길이 매개 변수에 대해 먼저 알아보도록 하자.
1. 가변길이 매개 변수
함수를 오버로딩하는 과정에서
똑같은 타입인데 매개변수의 '수'가
다르다는 이유만으로 오버로딩을 했다.
C#은 가변길이 매개 변수를 제공하여
그 개수가 유연하게 변할 수 있게 한다.
int total = 0;
total = Sum( 1, 2, 3);
total = Sum( 1, 2, 3, 4, 5);
total = Sum( 1, 2, 3, 4, 5, 6, 7, 8);
위와 같이 매개 변수의 수가 정해져 있지 않다면
(똑같은 타입일 경우에만) 그 만큼 함수를 오버로딩해서
사용하는 것이 아니라 가변길이 매개 변수를 사용한다.
가변길이 매개 변수는 params 키워드와 배열을 이용해서 선언.
int Sum ( params int[] args ){
int sum = 0;
for( int i = 0; i<args.Length; i++){
sum += args[i];
}
return sum;
}
==> 형식은 같으나 매개 변수의 개수만 유연하게 달라질 경우에 적합하다.
2. 명명된 매개 변수
메소드를 호출할 때 매개 변수 목록 중 어느 매개 변수에 데이터를
할당할 것인지를 지정하는 것은 '순서'이다. 명명된 매개 변수는
순서가아닌 매개 변수의 이름에 근거해서 데이터를 할당한다.
static void Print( string name , int phone ){ ... }
static void Main(string[] args){
Print ( name : "홍길동" , phone : "2222" );
Print ("김사랑" , "11111" );
Print ( phone : "3333" , name : "한고은" );
}
다소 번거로워 보일 수도 있지만, 매개 변수의 수가 많은 경우
가독성을 높여줄 수 있다. 또한 디폴드 매개 변수가 많은 경우에도
가독성이 상당히 안좋아질 수가 있는데, 명명된 매개 변수를
사용할 경우 이 문제를 해결할 수 있다.
'C#, 유니티' 카테고리의 다른 글
[유니티 포트폴리오] Wingz Defense , Red Sniper (0) | 2017.02.20 |
---|---|
[C#] C#의 깊은 복사에 관하여 (1) | 2017.02.19 |
[C#] ref 키워드 (참조자) , out 키워드 (출력 전용 매개 변수) (0) | 2017.02.17 |
[C#] 박싱/언박싱 (boxing/unboxing) (0) | 2017.02.15 |
[유니티 C#][자료구조] Dictionary (딕셔너리) (1) | 2017.01.17 |