在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)
撇开这是一个坏主意的事实,你实际上可以创建一个'DoNothing'方法使用一个属性来有条件地发出方法调用(注意这取决于你没有#define'从不'条件的约定.)由于ConditionalAttribute,不会发出对该方法的调用,并且您实际上有一个代码的'nop'部分.
[Conditional("NEVER")]
public void DoNothing()
{
}
Run Code Online (Sandbox Code Playgroud)
不过,正如其他几个人已经指出的那样,不建议这样做.
如果你只想在其中一个案例中做某事,你为什么要使用三元运算符?为什么不反转条件并使用if语句?
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
Run Code Online (Sandbox Code Playgroud)