有没有办法使用? :没有赋值的符号/返回void的方法

时间:2013-06-25 10:10:50

标签: c# .net conditional-operator

有没有办法使用? :c#中的表示法没有分配表达式的结果,甚至没有分配表达式?运算符,不返回任何值。

E.g。我想运行类似的东西

(1=1) ? errorProvider.SetError(control,"Message") : DoNothing();

expression? DoSomething (): DoSomethingElese()

DoSomething和DoSomethingElse返回的类型是无效的。

4 个答案:

答案 0 :(得分:4)

没有

?:返回基于boolean条件的值。您无法使用void 表达。

只需使用if

即可
   if (expression) {
        DoSomething();
   } else {
        DoSomethingElse();
   }

http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.110).aspx

答案 1 :(得分:3)

没有。三元运算符的重点是返回一些东西。换句话说:表达式必须具有返回类型(void除外)。在这种情况下,您只需使用if / else构造。

答案 2 :(得分:1)

正如其他人所说,你不能 - 一个If / Else将是正确的选择。但是,在您的示例中,您可以执行以下操作:

errorProvider.SetError(control, SomeCondition ? "Message" : string.Empty) 

答案 3 :(得分:1)

最接近的是扩展布尔类型:

public static void IIF(this bool condition, Action doWhenTrue, Action doWhenFalse)
{
    if (condition)
        doWhenTrue();
    else
        doWhenFalse();
}

然后你赢了一个oneliner:

(1 == 1).IIF(() => DoSomething(), () => DoSomethingElse());