我被一段代码弄糊涂了:
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