C# 中是否有“什么都不做”的关键字?
例如,我想使用三元运算符,其中一个操作是不采取任何操作:
officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
C# 中是否有“什么都不做”的关键字?
例如,我想使用三元运算符,其中一个操作是不采取任何操作:
officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
不,没有这样的关键字。此外,?:
操作员并不是用来决定动作的。它用于决定价值(或者,更专业地说,价值表达)。
您真的非常想使用 if 条件来进行此类决策:
if (!officeDict.ContainsKey("0"))
officeDict.Add("0", "");
正如其他人所指出的,if
在这里使用语句更为惯用。
但要回答您的问题,您可以使用 lambda 和委托:
// Bad code, do not use:
(officeDict.ContainsKey("0") ? (Action)(() => { }) : () => officeDict.Add("0", ""))();
撇开这是一个坏主意这一事实不谈,您实际上可以使用属性创建一个“DoNothing”方法来有条件地发出方法调用(请注意,这依赖于您不#define a 'NEVER'条件的约定。)由于 ConditionalAttribute,不会发出对该方法的调用,并且您基本上有一个“nop”代码部分。
[Conditional("NEVER")]
public void DoNothing()
{
}
尽管如此,正如其他几个人已经指出的那样,不建议这样做。
如果您只想在其中一种情况下做某事,为什么要使用三元运算符?为什么不直接反转条件并使用 if 语句?
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
三元运算符用于表达式,而不是语句。
你想要一个if
声明。
为什么不直接使用 if 语句,所以代码如下所示:
if(!officeDict.ContainsKey("0"))
officeDict.Add("0","")
为什么不写一个简单的if
呢?
if (!officeDict.ContainsKey("0"))
officeDict.Add("0","")
它将更具可读性。
您为什么不为此使用 IF 语句?
if(!officeDict.ContainsKey("0")) officeDict.Add("0","");
请改用 if 语句。
if (!officeDict.ContainsKey("0"))
{
officeDict.Add("0","")
}
试试这个(笑)
if (officeDict.ContainsKey("0"))
Thread.Sleep(1)
else
officeDict.Add("0","")