2012-05-01 2 views
-5

? : 연산자를 사용하려면 다음 코드를 어떻게 변환합니까? 가능한가요?사용 방법 : 연산자 :

tbtotalamount.Text = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", "")); 
if (tbtotalamount.Text.Length == 0) 
{ 
    tbtotalamount.Text = "0"; 
} 
+2

http://msdn.microsoft.com/en-us/library/ty67wk28.aspx – zerkms

답변

10

인용 된 코드가 삼항 연산자의의 conditional operator (라고도 "삼항 연산자"기술적으로하지만 호출되는 ? : 연산자를 사용하여 혜택을하지 않을   — 예를 들어, 세 개의 피연산자이있는 운영자).

일반적으로 조건부 연산자는 변수가 있고 조건에 따라 두 값 중 하나를 지정하려는 경우에 편리합니다. 그래서이 형태의 코드 :

if (someCondition) { 
    a = "one value"; 
} 
else { 
    a = "a different value"; 
} 

가 귀하의 경우에는

a = someCondition ? "one value" : "a different value"; 

를 다시 쓸 수는 있지만, 당신은 '당신, 그래서 string.Format을 완료 한 후까지 tbtotalamount.Text가 비어 모르겠어요 if으로 남겨 두는 것이 좋습니다.

+0

감사합니다 TJ Crowder. – kashif

+2

@kashif : 도와 줘서 다행입니다. (BTW, 나는 그 모든 소란이 그 질문에 관한 것을 보지 못했다. 내가 다시 투표하기로 결정했다.) –

+0

위에서 언급 한 예를 사용하면 쓸모가 없다는 것을 알았습니까? 연산자를 사용하고 그것을 함께 남기는 것이 더 낫다 ... 더 자세히 나는 주된 요점 즉, 언제 어떻게해야 하는가? 연산자가 사용됩니다. 그것은 그것이 나를 도왔던 방법이다. – kashif

4

예. 방법은 다음과 같습니다.

string test = string.Format("{0:n2}", dtl.Compute("sum(NetPay)", "")); 
tbttotalamount.Text = test.length == 0 ? "0" : test; 

너무 많은 downvotes를 보니 미안 해요, 나는 익숙하지 않은가요? (삼원 항) 연산자도 매우 오랜 시간 동안. 나는 그것이 매우 편리하다고 생각한다.

왼쪽은 테스트 표현식입니다. 평가 후에는 부울이어야합니다. 오른쪽은 연산자가 반환하는 값입니다. true이면 :의 왼쪽으로 값을 반환합니다. false이면 오른쪽 값입니다. 전체 식은 무언가를 반환하며, 컴파일러는 여러분이 무언가를 할 것을 요구합니다. 반환 유형이 void 인 함수를 호출하는 if-else 문을 대체하려면 삼항 연산을 사용할 수 없습니다. 내가 말하고 무엇을 의미

는 (나 같은) 전에 사용한 적이 많은 사람들이 그것을 하지 경우 - 다른 교체하는 순수 생각하는 것이다.

+0

나는이 quesion에 대한 downvoting을 두려워했다. 어떤 방법으로 고마워요 – kashif

+0

이것은'int' 리터럴에서'0'으로 컴파일되지 않으며'test'는'string' 변수입니다. – Yuck

+0

'0'이 자동으로 문자열로 변환됩니까? 잠시 동안 C# 프로그램을 작성하지 않았으므로 확실하지 않습니다. – zerkms