-6

我正在尝试使用此语句

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

基本上,如果有一个 InnerException 因为它不为空,则显示它,如果它为空则不输出任何内容。

这就像我认为我可以拥有的那样精简

 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 内部异常的情况下

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;

至于使它比这更精简,您可以使用条件和/或空合并,但这是完全可读的。

但是,如果您愿意,也可以这样做。

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;

(请记住,这将在每个异常前面放置一个“系统异常:”或类似内容。)

否则,您的代码似乎已经足够精简。(可读性有时比紧凑性更可取。)

于 2012-07-12T14:42:26.657 回答