2009-03-16 5 views
2

, 기본 값으로 할당됩니다는 C#에서 PHP와 같은 선택적 매개 변수가있다? 당신이 매개 변수를 전송하지 않는 경우 <strong>PHP 선택적 매개 변수</strong>와

public function getCustomer(id, optionalMessage = "(no message)") { 
    ... 
} 

C#에서 내가 일반적으로 C#을 방법은 예를 들어, 과부하로이 문제를 해결 :

public void GetCustomer(int id) 
{ 
    ... 
} 

public void GetCustomer(int id, string optionalMessage) 
{ 
    ... 
} 

하지만 실용적인 PHP 변형을 그리워은 는 C#을 또한 PHP의 예에서와 같이,뿐만 아니라 선택적 매개 변수를 할 수있는 몇 가지 달콤한 구문이 무엇입니까? C#을 3.0

답변

8

하지; 이 기능은 C# 4.0 시트에 - here를 참조하십시오. 제안 된 구문이 될 것

public void Foo(int a) {Foo(a, "");} 
public void Foo(int a, string b) {...} 

:

public void Foo(int a, string b = "") {...} 

이의 호출 : 지금은

, 당신은 다른 오버로드를 사용해야합니다

Foo(123); // use default b 
Foo(123, "abc"); // optional by position 
Foo(123, b: "abc"); // optional by name 
+0

블로그 포스트는 이유를 지적 , 감사 –

4

아니, 하지만 당신은 선택적 매개 변수가 동일한 유형의 특히 경우, 어느 정도를 시뮬레이션 할 수 있습니다 (또는 솜을하고 상관 없어 전자 주조).

당신은 PARAMS 플래그를 사용할 수 있습니다.

void paramsExample(object arg1, object arg2, params object[] argsRest) 

그러나이 유형 안전성이 손실되며 매개 변수 또는 순서의 유형 적용이 없음을 지적해야합니다. (당신이 세터있을이 제안으로), 좋은 나는 거의 (예를 들어, 사용자 정의 속성)라는 이름의 매개 변수와 함께 해결은 IT를보고 있었다하지만 100 %가 아니었다 : 나는 물었다