我有这段代码:
field = string.Format(Str, value1, value2,
found == true ? fieldName : "", found == true ? "product" : "");
有没有办法将两个found == true
三元运算合并为一个更简洁的代码?
答案 0 :(得分:19)
您不需要== true
位:
field = string.Format(Str, value1, value2, found ? fieldName : "", found ? "product" : "");
但是,在我看来,以下内容更容易阅读:
if (found) {
field = string.Format(Str, value1, value2, fieldName, "product");
}
else {
field = string.Format(Str, value1, value2, "", "");
}
答案 1 :(得分:7)
具有多个三元运算符的长行可能非常难以理解。换行符有助于 little 具有可读性。
field = string.Format(Str,
value1,
value2,
found ? fieldName : "",
found ? "product" : "");
答案 2 :(得分:6)
这只是一个意见,但...... YUK!我讨厌读这样的代码。
三元运算符可以减少代码,但可读性在这里受到影响。如果它损害了可读性,请不要使用更少的代码行。
答案 3 :(得分:2)
怎么样:
field = found ? string.Format(Str, value1, value2, fieldName, "product")
: string.Format(Str, value1, value2, "", "");
只有一个三元组,比原始示例更易读,但我会考虑使用if / else语句以便于阅读......
答案 4 :(得分:1)
你可以这样缩写:
field = string.Format(Str, value1, value2, found ? fieldName : "", found ? "product" : "");
答案 5 :(得分:1)
停止将found
与true
进行比较。您希望条件是否为found
,而不是found
是否为true
:
found ? fieldName : string.Empty
答案 6 :(得分:0)
比较真实是不必要的:
field = string.Format(Str, value1, value2, found ? fieldName : "", found ? "product" : "");
答案 7 :(得分:0)
由于String.Format
采用params
数组,因此尚未建议的一个主要变体是
field = string.Format(Str, found
? new object[] {value1, value2, fieldName, "product"}
: new object[] {value1, value2, string.Empty, string.Empty});
答案 8 :(得分:0)
这行代码使我的手动解析器花了一些时间来消化比我想要的更长。我只是为了简洁而优雅的编码,但是你宁愿在几个月的时间内遇到这个,虽然还有几行?
if (found)
// Use empty strings for fieldName and productName
field = String.Format(Str, value1, value2, fieldName, productName);
else
// Use the fieldName and productName in the string
field = String.Format(Str, value1, value2, String.Empty, String.Empty);
仅仅是我的个人品味,但我知道我宁愿遇到哪一个。