-6

私はこのステートメントを使おうとしています

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

基本的に、nullではないためにInnerExceptionがある場合はそれを表示し、nullの場合は何も出力しません。

これは私がそれを持つことができると思うのと同じくらい合理化されています

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

乾杯。

4

5 に答える 5

3

代わりにこれを使用してください:

status_label.Text =  err.InnerException == null 
    ? err.Message
    : err.Message + " || " + err.InnerException.Message;
于 2012-07-12T14:34:25.783 に答える
1

三項演算子の周りの括弧がありません

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

または、|| が必要ない場合 null innerexception の場合

status_label.Text = err.Message + (err.InnerException == null ? "" : " || " + err.InnerException.Message); 
于 2012-07-12T14:38:05.247 に答える
0

これでうまくいくはずです:

status_label.Text = string.Format("{0}{1}", err.Message, err.InnerException != null ? string.Format(" || {0}", err.InnerException.Message) : string.Empty);
于 2012-07-12T14:34:39.773 に答える
0

まず、ifステートメントはこれでなければなりません

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

これよりも合理化するために、条件付きおよび/またはnull合体を利用できますが、それは完全に読みやすいです。

ただし、必要に応じてこれを行うこともできます。

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

それはもう簡潔ですか?あまり。

于 2012-07-12T14:38:53.857 に答える
0

完全な例外が印刷されても構わない場合は、次のようにします。

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

(これにより、各例外の前に「System Exception:」などが表示されることに注意してください。)

それ以外の場合、コードはそのままで十分に合理化されているように見えます。(コンパクトさよりも読みやすさの方が望ましい場合があります。)

于 2012-07-12T14:42:26.657 に答える