【发布时间】: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