如何理解“!string.IsNullOrWhiteSpace(s)”语法?

How to understand "!string.IsNullOrWhiteSpace(s)" syntax?

嗯,其实我知道“!”表示 NOT,我非常理解 "IsNullOrWhiteSpace" 函数目标。但是曾几何时,当我在互联网上寻找如何删除空格时,我遇到了这种语法:

if (!string.IsNullOrWhiteSpace(s))
{
    writer.WriteLine(s);
}

我应该如何理解这样的语法? DATATYPE(!!!) 前的感叹号,然后数据类型使用我的字符串参数调用函数,稍后被写入某个文件。 而且,顺便说一句,如果我从中读取文本的文件在实际字符串之间有几个(可能或多或少)空格,是否有更好的方法来删除空行?

IsNullOrWhiteSpace is a static method 在类型 System.String 上定义(可以缩写为 string)。

您发布的代码片段不会删除空行,它只是跳过了它们。这意味着 writer.WriteLine(s); 部分不为空行调用。

Exclamation mark before the DATATYPE(!!!)

它不在数据类型之前,它在调用 System.String 类型的静态方法 IsNullOrWhiteSpace 之前。您可以研究一下 here。此方法的结果是布尔值。因此,您正在对布尔结果应用否定运算符 (!)。当结果等于 true 时,即在 s 参数中传递给 IsNullOrWhiteSpace 方法的字符串为空或白色 space,取反运算符使它成为 false,反之亦然。之后 if 语句获取 ! 运算符工作的结果(truefalse)并决定下一步做什么。

And, by the way, is there a better approach to delete empty lines if my file from where I read text has several (maybe, more or less) whitespaces between the actual strings?

所以你正在从文件中读取并写入另一个或同一个文件。您的方法可行,但请记住,s 必须是初始文件中的一行,而不是单词或符号。