C#中是否有“无所事事”的关键字?
例如,我想使用三元运算符,其中一个操作是不采取任何操作:
officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
答案 0 :(得分:40)
不,没有这样的关键字。此外,?:
运算符不用于决定操作。它用于决定值(或者,更具技术性,值表达式)。
你真的,真的想用if条件来代替这种决策:
if (!officeDict.ContainsKey("0"))
officeDict.Add("0", "");
答案 1 :(得分:18)
正如其他人所指出的,使用if
声明在这里更为惯用。
但要回答你的问题,你可以使用lambdas和delegates:
// Bad code, do not use:
(officeDict.ContainsKey("0") ? (Action)(() => { }) : () => officeDict.Add("0", ""))();
答案 2 :(得分:6)
撇开这个坏主意的事实,你实际上可以创建一个'DoNothing'方法,使用一个属性来有条件地发出方法调用(注意这取决于你没有#define'从来没有'的约定条件。)由于ConditionalAttribute,不会发出对方法的调用,并且你基本上有一个'nop'代码段。
[Conditional("NEVER")]
public void DoNothing()
{
}
不过,正如其他几位已经指出的那样,不建议这样做。
答案 3 :(得分:5)
如果您只想在其中一个案例中执行某些操作,为什么要使用三元运算符? 为什么不反转条件并使用if语句?
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
答案 4 :(得分:3)
为什么不使用if语句,所以代码如下所示:
if(!officeDict.ContainsKey("0"))
officeDict.Add("0","")
答案 5 :(得分:2)
三元运算符用于表达式,而不是语句。
您需要if
声明。
答案 6 :(得分:2)
为什么不用简单的if
来编写它?
if (!officeDict.ContainsKey("0"))
officeDict.Add("0","")
它将更具可读性。
答案 7 :(得分:2)
为什么不直接使用IF语句?
if(!officeDict.ContainsKey("0")) officeDict.Add("0","");
答案 8 :(得分:2)
改为使用if语句。
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
答案 9 :(得分:-3)
试试这个(grinns)
if (officeDict.ContainsKey("0"))
Thread.Sleep(1)
else
officeDict.Add("0","")