在C#中什么都不做关键字?

Spe*_*ick 12 c#

在C#中是否有"无所事事"的关键字?

例如,我想使用三元运算符,其中一个操作是不采取任何操作:

officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 40

不,没有这样的关键字.此外,?:操作员不是用于决定行动.它用于决定(或者更具技术性的值表达式).

你真的,真的想使用if条件进行这种决策:

if (!officeDict.ContainsKey("0"))
    officeDict.Add("0", "");
Run Code Online (Sandbox Code Playgroud)


Ani*_*Ani 18

正如其他人所指出的那样,使用if陈述在这里更为惯用.

但要回答你的问题,你可以使用lambdas和delegates:

// Bad code, do not use:
(officeDict.ContainsKey("0") ? (Action)(() => { }) : () => officeDict.Add("0", ""))();
Run Code Online (Sandbox Code Playgroud)

  • 实际上可以提供有效的解决方案.即使它是friggin延迟... (12认同)

Dan*_*ant 6

撇开这是一个坏主意的事实,你实际上可以创建一个'DoNothing'方法使用一个属性来有条件地发出方法调用(注意这取决于你没有#define'从不'条件的约定.)由于ConditionalAttribute,不会发出对该方法的调用,并且您实际上有一个代码的'nop'部分.

       [Conditional("NEVER")] 
       public void DoNothing() 
       { 
       } 
Run Code Online (Sandbox Code Playgroud)

不过,正如其他几个人已经指出的那样,不建议这样做.


Fre*_*els 5

如果你只想在其中一个案例中做某事,你为什么要使用三元运算符?为什么不反转条件并使用if语句?

if (!officeDict.ContainsKey("0"))
{
    officeDict.Add("0","")
}
Run Code Online (Sandbox Code Playgroud)