有什么方法可以使用吗?:c中的符号,而不分配表达式的结果,甚至使用表达式,在?之后?运算符,不返回任何值。
例如,我想运行类似的程序
(1=1) ? errorProvider.SetError(control,"Message") : DoNothing();
expression? DoSomething (): DoSomethingElese()
其中DoSomething和DoSomethingElse返回类型为void。
否。
CCD_ 1返回基于CCD_ 2条件的值。不能在中使用void
表示
只需使用if
if (expression) {
DoSomething();
} else {
DoSomethingElse();
}
http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.110).aspx
否。三元运算符的全部意义在于它返回一些东西。换句话说:表达式必须具有返回类型(而不是void
)。在这种情况下,您只需要使用if
/else
构造。
你能得到的最接近的是通过扩展布尔类型:
public static void IIF(this bool condition, Action doWhenTrue, Action doWhenFalse)
{
if (condition)
doWhenTrue();
else
doWhenFalse();
}
然后你赢得了一个oneliner:
(1 == 1).IIF(() => DoSomething(), () => DoSomethingElse());
正如其他人所说,你不能这样做-如果/Else是正确的选择。不过,在您的示例中,您可以执行以下操作:
errorProvider.SetError(control, SomeCondition ? "Message" : string.Empty)