我對我遇到的一段代碼感到非常困惑:
string s = "this is my dummy string, it could be anything";
if (s is null or "") { // ???
DoSomething();
}
我從未見過以這種方式測驗字串。我一直只看到這個:
if(string.IsNullOrEmpty(s))
我試過谷歌搜索,但涉及的關鍵字太籠統,無法找到任何相關結果。
所以你怎么看?這是測驗字串的一種新奇有效的方法,還是只是一些古怪的習慣?
uj5u.com熱心網友回復:
它們實際上是相同的:
https://docs.microsoft.com/en-us/dotnet/api/system.string.isnullorempty?view=net-5.0#remarks
評論
IsNullOrEmpty 是一種方便的方法,可讓您同時測驗 String 是否為 null 或其值是否為 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
uj5u.com熱心網友回復:
對性能有一個很好的判斷。
我撰寫這些代碼并單獨運行它們。
結果很有見地
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");
}
}
結果(以毫秒為單位的持續時間):
方法 1:2959.476
方法 2:4676.6368
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/334527.html
上一篇:如何通過換行符和固定數量的制表符(如Java中的“\n\t”)拆分字串?
下一篇:用熊貓計算列中每行的字串數
