C#operator?:如何简化一个表达式中的基本if语句

-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)

我能做到这一点的代码/一个表达的一条线,而无需使用两次?

Jon*_*eet 9

我可以在一行代码/一个表达式中完成,而不使用两次吗?

是的,但你真的不应该:

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)

如果可以,请选择一个更好的名字:)