문 #

2012-07-12 4 views
-6

c를 내가의 InnerException이있는 경우는 null의 경우는 null가 아닌 있기 때문에, 다음 다음 출력 아무것도하지, 그것을 보여이 문 기본적으로문 #

status_label.Text = err.Message + " || " + err.InnerException == null ? " " : err.InnerException.Message; 

를 사용하기 위해 노력하고있어 경우 간소화. 나는 그것을

status_label.Text = err.Message; 
if (err.InnerException != null) 
    status_label.Text += " || " + err.InnerException.Message; 

건배를 할 수 있습니다 생각하는

이 같은 유선형이다.

+6

그리고 귀하의 질문은 무엇입니까? –

+0

질문이없는 것 같습니다. –

+0

코드 리팩토링에 큰 이점이 없습니다. 당신의 연결은 string이되어야합니다. 문자열은 .Net .... (J Torres의 게시물 참조)에서 불변이므로, 형식화()는 가능합니다. –

답변

3

사용이 대신 :이 트릭해야

status_label.Text = err.InnerException == null 
    ? err.Message 
    : err.Message + " || " + err.InnerException.Message; 
+0

감사를위한 @NominSim. –

+0

InnerException이 null이 아닌 경우 "||"가 포함되지 않습니다. –

+0

@ JTorres, 이제 그것을 포함합니다. –

0

: 당신은 삼항 연산자 주위 brakets 누락

status_label.Text = string.Format("{0}{1}", err.Message, err.InnerException != null ? string.Format(" || {0}", err.InnerException.Message) : string.Empty); 
+0

+1 : 하. 나는이 "정답"을 타이핑하는 과정에 있었다. –

+0

나는 누군가가 왜 이것을 downvoted하는지 궁금해한다. –

+4

haters가 싫어할 것이다 ... –

1

status_label.Text = err.Message + " || " + (err.InnerException == null ? " " : err.InnerException.Message); 

또는, 당신이 돈이 ' 그걸 원하지 않는다. 문은 이것보다 더 효율적인 제작에 관해서는이

status_label.Text = err.Message; 
if (err.InnerException != null) 
    status_label.Text += " || " + err.InnerException.Message; 

을해야하는 경우

status_label.Text = err.Message + (err.InnerException == null ? "" : " || " + err.InnerException.Message); 
+0

InnerException조차도 "||"가 포함됩니다. –

0

첫째 널의 InnerException의 경우에, 당신의, 당신은 조건문 및/또는 null 병합을 활용하지만 수 완벽하게 읽을 수 있습니다.

그러나 그렇게하는 것이 좋습니다.

status_label.Text = string.Concat(err.Message, err.InnerException == null ? string.Empty : " || " + err.InnerException.Message); 

더 이상 간결한가요? 그렇지 않아. 당신이 전체 예외 괜찮다면

0

그냥 생각, 당신이 할 수있는 인쇄되는 :

status_label.Text = err.ToString(); 
status_label.Text += err.InnerException; 

(이것은 "시스템 예외"둘 것이다 명심 각각의 앞에 등을 예외).

그렇지 않으면 코드가 간소화 된 것처럼 보입니다. (가독성은 간결함보다 더 바람직합니다.)