有没有办法使用?: c# 中的表示法,在 ? 之后没有分配表达式的结果,甚至没有分配表达式的结果。运算符,不返回任何值。
例如,我想运行类似的东西
(1=1) ? errorProvider.SetError(control,"Message") : DoNothing();
expression? DoSomething (): DoSomethingElese()
其中 DoSomething 和 DoSomethingElse 返回的类型是无效的。
有没有办法使用?: c# 中的表示法,在 ? 之后没有分配表达式的结果,甚至没有分配表达式的结果。运算符,不返回任何值。
例如,我想运行类似的东西
(1=1) ? errorProvider.SetError(control,"Message") : DoNothing();
expression? DoSomething (): DoSomethingElese()
其中 DoSomething 和 DoSomethingElse 返回的类型是无效的。
不。
?:
根据boolean
条件返回一个值。您不能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();
}
然后你赢得了一个单线:
(1 == 1).IIF(() => DoSomething(), () => DoSomethingElse());
正如其他人所说,你不能 - If/Else 将是正确的选择。不过,在您的示例中,您可以执行以下操作:
errorProvider.SetError(control, SomeCondition ? "Message" : string.Empty)