C# “如何理解”;!string.IsNullOrWhiteSpace“;语法?

C# “如何理解”;!string.IsNullOrWhiteSpace“;语法?,c#,string,removing-whitespace,isnull,writer,C#,String,Removing Whitespace,Isnull,Writer,事实上,我知道“!”的意思不是,而且我非常理解“IsNullOrWhiteSpace”函数的目的地。但曾几何时,当我在互联网上搜索如何删除空白时,我遇到了这种语法: if (!string.IsNullOrWhiteSpace(s)) { writer.WriteLine(s); } 我应该如何理解这样的语法?在数据类型(!!!)之前加上感叹号,然后该数据类型使用my string的参数调用该函数,稍后将写入某个文件。 顺便问一下,如果我从文件中读取文本时,实际字符串之间有几个空格(可

事实上,我知道“!”的意思不是,而且我非常理解“IsNullOrWhiteSpace”函数的目的地。但曾几何时,当我在互联网上搜索如何删除空白时,我遇到了这种语法:

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

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

是在类型
系统上定义的。String
(可以缩写为
String
)。

您发布的代码片段不会删除空行,它只是让他们无法写作。这意味着
writer.WriteLine(s)未为空行调用部件


数据类型前面的感叹号(!!!)

它不是在数据类型之前,而是在调用
System.String
类型的静态方法
IsNullOrWhiteSpace
之前。你可以研究一下。此方法的结果是布尔值。因此,您将对布尔结果应用一个求反运算符(
)。当结果等于
true
时,即在
s
参数中传递给IsNullOrWhiteSpace方法的字符串为null或空白,则求反运算符将其设置为
false
,反之亦然。然后,
if
语句获取
的结果操作员工作(
true
false
)并决定下一步做什么

顺便问一下,有没有更好的方法来删除空行 我阅读文本的文件有几个(可能或多或少) 实际字符串之间的空格


因此,您正在读取文件并写入另一个或同一个文件。您的方法将起作用,但请记住,
s
必须是初始文件中的一行,而不是单词或符号。

静态方法调用?“数据类型前的感叹号”?你的意思是在类的名称之前吗?ProTip:String.IsNullOrWhiteSpace返回布尔值。我想你应该重新考虑一下你对
的理解表示“string.IsNullOrWhiteSpace(s)”返回布尔值!倒过来。然后在if中使用布尔值。这与编写类似于
if(string.IsNullOrWhiteSpace(s)!=true)
if(!(string.IsNullOrWhiteSpace(s)==true))
的代码是一样的。您可以将其理解为“如果s不是null或空白,请将其发送给编写器”。我猜s可能是一个角色。如果是这样,则char和string之间存在隐式转换。