-7 c# expression operator-keyword
有没有办法简化这个表达式:
我想做这个:
d = ( a == "x" ? b : a )
Run Code Online (Sandbox Code Playgroud)
我可以使用三行代码:
d = a;
if(a == "x")
d = b
Run Code Online (Sandbox Code Playgroud)
我能做到这一点的代码/一个表达的一条线,而无需使用一两次?
我可以在一行代码/一个表达式中完成,而不使用两次吗?
是的,但你真的不应该:
d = new[] { a }.Except("x").DefaultIfEmpty(b);
Run Code Online (Sandbox Code Playgroud)
我真的没有认真地建议这一点 - 只是指出你的标准对于"可读"来说并不是一个好的指标.
如果您发现经常这样做,您可以编写扩展方法,例如
public static string OrDefaultFor(this string input,
string invalidInput,
string replacement)
{
return input == invalidInput ? replacement : input;
}
Run Code Online (Sandbox Code Playgroud)
然后:
d = a.OrDefaultFor("x", b);
Run Code Online (Sandbox Code Playgroud)
如果可以,请选择一个更好的名字:)