我正在尝试使用此声明
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;
干杯。
答案 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;
(请记住,这会在每个例外之前加上“系统例外:”等。)
否则你的代码看起来很简洁。 (可读性有时比紧凑性更令人满意。)