达到三元运算符的"另一面"时什么都不做?

dev*_*her 4 c# syntactic-sugar

注意:我有时会在(a,b,c)之前看到这个问题,但这些都不是在C#中,也没有帮助.

假设我正在使用这样的? :三元运算符(在false这种情况下什么也不做):

r==5? r=0 : <nothing> ;
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误.把东西放在那里显然可以解决问题.如果不做一些随机的空函数,我怎么能保持对方空?

Jon*_*eet 22

你不能.条件?:运算符的重点是它计算表达式.你甚至不能只使用:

Foo() ? Bar() : Baz();
Run Code Online (Sandbox Code Playgroud)

......因为那不是陈述.你必须对结果做些什么......就像你访问一个属性一样.

如果您只想在满足特定条件时执行一段代码,那么?:运算符不是您想要的 - 您需要一个if语句:

if (foo)
{
    bar();
}
Run Code Online (Sandbox Code Playgroud)

就这么简单.不要试图将条件运算符扭曲成它本身并不存在的东西.

  • 这就像是说你想要调用bar(). (5认同)
  • @devRicher:你的意思是你想要它去0,1,2,3,4,0,1,2,3,4等?如果是这样,你想要:`r =(r + 1)%5;`.同样,不需要条件运算符. (2认同)