有办法使用吗?:不带赋值/方法返回void的表示法

本文关键字:方法 返回 赋值 void 表示 | 更新日期: 2023-09-27 18:19:44

有什么方法可以使用吗?:c中的符号,而不分配表达式的结果,甚至使用表达式,在?之后?运算符,不返回任何值。

例如,我想运行类似的程序

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

其中DoSomething和DoSomethingElse返回类型为void。

有办法使用吗?:不带赋值/方法返回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)