[C# 4.0] Named and Optional Parameters

C# 2009. 4. 6. 15:34 Posted by 알 수 없는 사용자

Flex로 ActionScript 프로그래밍을 하다 보면 아래와 같은 메소드 선언을 많이 볼수 있습니다.
 
public function hitTestPointer(x:Number, y:Number, shapFlag:Boolean = false): Boolean
 
 Parameter 값에 Default 값을 넣어 사용하는 것은 ActionScript로 작업하고 있는 저로는 익숙한 표현이었지만, 가끔 다른 언어를 사용하다 보면 이런 표현이 있었으면 좋겠다고 생각했는데, 마침 C# 4.0에서 이런 문법을 사용할 수 있게 되었습니다. 위 코드 처럼 Boolean 타입인 shapFlag 의 값에 false 값을 넣어주는 것을 Optional Parameter 라고 하고, Default Parameter라고 부르기도 하더군요.
(지금 코드는 C#입니다)

 
public class Test
{
   public bool  hitTestPointer(float x, float y, bool shapeFlag = false)
   {
      .....................
   }
}
 
 
 그런데, Actionscript 와 차이점이 있다면, Parameter의 위치를 사용자가 원하는 대로 바꿀 수 있다는 점입니다. 예를 들어 Actionscript의 경우 Optional parameter 의 선언은 일반 parameter 뒤 이거나, 아니면, 전부 Optional parameter 로 선언해야 합니다. 

예들 들어
Actionscript )
hitTestPointer( 10, 10)  ------------>  OK
hitTestPointer( 10, false, 10) ---------> Error
hitTestPointer( 10, false) ------------> Error
하지만, C# 4.0 에서는 Named parameter 로 이 문제를 해결할 수 있습니다.
C# 4.0 )
hitTestPointer( 10, 10)  ------------>  OK
hitTestPointer( x: 10, shapFlag: false, y: 10) ---------> OK
hitTestPointer( x: 10, shapFlag: false) ------------> Error (y는 Optional Parameter 가 아님)
두번째 포스팅 하는 건데, (첫번째 포스팅은 내용에 맞지 않아 삭제함) 공부하다 제가 느낀 점만 간단히 적다보니 제대로 내용이 전달 되는 건 지 모르겟습니다. 관심 분야는 RIA 인데, C# 4.0 공부를 않 할 수가 없더라고요. 제 공부방향은 C# 4.0 의 내용을 파악한 뒤에 RIA 쪽으로 넘어가는 겁니다. 그런데, 아직 3.5 도 제대로 잘 모른다는...   어여튼 열심히 ^^