精简if语句c#

时间:2012-07-12 14:30:20

标签: c# visual-studio-2010 object if-statement

我正在尝试使用此声明

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

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

这简化了我认为我可以拥有它

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

干杯。

5 个答案:

答案 0 :(得分:3)

请改用:

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

答案 1 :(得分: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); 

答案 2 :(得分:0)

这应该可以解决问题:

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

答案 3 :(得分: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);

这样更简洁吗?不是真的。

答案 4 :(得分:0)

只是想一想,如果你不介意打印完整的Exception,你可以这样做:

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

(请记住,这会在每个例外之前加上“系统例外:”等。)

否则你的代码看起来很简洁。 (可读性有时比紧凑性更令人满意。)