是否有一行 - 条件检查和代码执行操作符?

Ins*_*nia 2 c# c#-6.0

我们有兴趣知道是否可以检查条件以及是否成功,而不是执行代码 - 在一行中,类似于条件运算符.条件运算符看起来像这样:

condition ? first_expression : second_expression;
Run Code Online (Sandbox Code Playgroud)

而我要问的是,如果有这样的事情:

condition ? code_execution;
Run Code Online (Sandbox Code Playgroud)

例如:

var i = 0, j = 1;
j==1 ? i = 10;
Run Code Online (Sandbox Code Playgroud)

实现这一目标的唯一方法是创建某种函数,该函数执行所需的代码并返回一些不必要的值,以后将其分配给非必要的变量.这是这样的:

var i = 0, j = 1;
int? tmp = true ? workaround(ref i) : null;

// defined somewhere 
public void workaround(ref int foo){
  foo = 10;
  return null;
}
Run Code Online (Sandbox Code Playgroud)

有没有这样的事情,或者我只是没有看到应该怎么做?

Mes*_*esh 7

var i = 0, j = 1;
if( j==1) i = 10;
Run Code Online (Sandbox Code Playgroud)


Lou*_*eda 6

简短的回答是否定的。

恕我直言,你应该避免它,最好使控制流语句明显,这样更容易阅读。

所以 if(j==1) i = 10;会做

我个人更喜欢

if(j==1)
{
   i = 10;
}
Run Code Online (Sandbox Code Playgroud)

因为它对我来说更容易阅读

  • 我会添加大括号...是的,它是 4 行而不是 1 行,但这使得意外添加您“认为”在语句正文中但实际上并非如此的内容变得更加困难。 。 (3认同)
  • 您正在考虑什么样的保护条款?C# 7 的模式匹配?但是,是的,我几乎总是使用牙套。我*有时*会堆叠不带大括号的“using”语句,但很少这样做。 (2认同)