有没有办法使用? :c#中的表示法没有分配表达式的结果,甚至没有分配表达式?运算符,不返回任何值。
E.g。我想运行类似的东西
(1=1) ? errorProvider.SetError(control,"Message") : DoNothing();
expression? DoSomething (): DoSomethingElese()
DoSomething和DoSomethingElse返回的类型是无效的。
答案 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());