2013-06-25 5 views
-4

사용할 방법이 있습니까? : 표현식의 결과를 할당하지 않고 C#의 표기법을 사용하거나 심지어 표현식을 사용하지 않고? 연산자는 값을 반환하지 않습니다.사용할 방법이 있습니까? : 할당이없는 표기법/void를 반환하는 메서드 사용

예. 해봐요 및 DoSomethingElse이 유형은 무효 반환 어디에서

(1=1) ? errorProvider.SetError(control,"Message") : DoNothing(); 

expression? DoSomething(): DoSomethingElese() 

같은 것을 실행하려는.

+2

이유 :

public static void IIF(this bool condition, Action doWhenTrue, Action doWhenFalse) { if (condition) doWhenTrue(); else doWhenFalse(); } 

그런 다음 당신이 oneliner 승리를? 당신은 언제나'if (expression) DoSomething(); else DoSomethingElese();'. – Henrik

+0

그래, 나는 그것을 해킹 할 방법이 있는지를 배회하고 있었다. – Darqer

+0

두 줄로 코드를 단축하려고하는 또 다른 시도입니까? – Dennis

답변

3

아니오. 3 진 연산자의 전체 점은 무엇인가를 반환한다는 것입니다. 즉, 표현식에 반환 유형이 있어야합니다 (void 제외). 이 경우 if/else 구성을 사용해야합니다.

1

를 사용 -에 If/그렇지는 올바른 선택이 될 것입니다. 하지만 당신의 예에서, 당신은 같은 일을 할 수있는 :

errorProvider.SetError(control, SomeCondition ? "Message" : string.Empty) 
1

당신이 얻을 수있는 가장 가까운이 부울 유형의 확장입니다 :

(1 == 1).IIF(() => DoSomething(),() => DoSomethingElse());