【问题标题】:c# negation operator open parenthesis expected时间:2019-05-10 标签:c#negation operator open括号
【发布时间】:2021-04-06 07:08:29
【问题描述】:

在 C# 中,我正在为这样的否定运算符编写代码,但它显示 syntax error, '(' expected

DataTable tmp = new DataTable();
var col = tmp.Columns;
if !(col.Contains("COL1") && col.Contains("COL2") && col.Contains("COL3"))
{
    //DO STH
}

如果我改成这个代码,错误就会消失:

DataTable tmp = new DataTable();
var col = tmp.Columns;
if (!col.Contains("COL1") || !col.Contains("COL2") || !col.Contains("COL3"))
{
    //DO STH
}

Docs from MS 似乎太简单了,我没有找到如何更正第一个代码。

那么为什么第一个代码有语法错误,以及如何修复它?

【问题讨论】:

  • 你应该把if 条件放在括号里:if (any condition here)
  • if语法if (expression),括号不是可选的。
  • 您也可以使用辅助变量。当表达式太长或太复杂时,只需将其存储在变量var constainsTheColumns = col.Contains("COL1") && col.Contains("COL2") && col.Contains("COL3"); 中并取反:if (!constainsTheColumns){。开销只是堆栈上的一个布尔值。但它可能有助于提高可读性。

标签: c# parentheses negation


【解决方案1】:

if 总是以 ( 开头,所以代码应该是

DataTable tmp = new DataTable();
var col = tmp.Columns;
if (!(col.Contains("COL1") && col.Contains("COL2") && col.Contains("COL3")))
{
    //DO STH
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-15
    • 2020-10-01
    • 2015-06-14
    • 2011-07-08
    • 2012-02-03
    • 2017-04-15
    • 2021-07-31
    • 2016-01-27
    相关资源
    最近更新 更多