使用以下结构测试 null 或空字符串:s 为空或" "



我被一段代码弄糊涂了:

string s = "this is my dummy string, it could be anything";
if (s is null or "") { // ???
DoSomething();
}

我从未见过以这种方式测试字符串。我一直只看到这个:

if(string.IsNullOrEmpty(s))

我试过用谷歌搜索,但所涉及的关键字太笼统,找不到任何相关的结果。

你觉得怎么样?这是测试字符串的一种新颖有效的方法,还是仅仅是一种古怪的习惯?

对性能有良好的判断。
我编写这些代码并分别运行它们。
结果很有见地

using System;

public class Program
{
public static void Main()
{
Console.WriteLine("Start");

string s = "this is my dummy string, it could be anything";

var d1 = DateTime.Now;
for(var i=0; i<1000000000;i++)
{
if(string.IsNullOrEmpty(s))
{
Console.WriteLine("Hello Again");
}
}
Console.WriteLine("Method1: " + (DateTime.Now - d1).TotalMilliseconds);


Console.WriteLine("End");
}
}

using System;

public class Program
{
public static void Main()
{
Console.WriteLine("Start");

string s = "this is my dummy string, it could be anything";

var d2 = DateTime.Now;
for(var i=0; i<1000000000;i++)
{
if (s is null or "")
{
Console.WriteLine("Hello Again");
}
}
Console.WriteLine("Method2: " + (DateTime.Now - d2).TotalMilliseconds);

Console.WriteLine("End");
}
}

结果(以毫秒为单位):
Method1: 2959.476


Method2: 4676.6368

它们实际上是相同的:

https://learn.microsoft.com/en us/dotnet/api/system.string.isnullorempty?view=net - 5.0 #评论

评论

IsNullOrEmpty是一个便利性方法,使您能够同时测试一个String是空的还是它的值是空的String.Empty。它相当于下面的代码:

bool TestForNullOrEmpty(string s)
{
bool result;
result = s == null || s == string.Empty;
return result;
}
string s1 = null;
string s2 = "";
Console.WriteLine(TestForNullOrEmpty(s1));
Console.WriteLine(TestForNullOrEmpty(s2));
// The example displays the following output:
//    True
//    True

相关内容

  • 没有找到相关文章

最新更新