[英]Use of the is keyword to check if a nullable is not null
我剛剛發現,可以在 C# 中使用is-keyword
對可空結構進行空檢查。 我認為它看起來很干凈並且很好理解,但它也有性能嗎? 口譯員是否必須雙重投射它或者這樣可以嗎?
static void Main(string[] args)
{
DateTime? test = null;
PrintDT(test);//wont print
test = DateTime.Now;
PrintDT(test);//will print
}
private static void PrintDT(DateTime? dt)
{
if (dt is DateTime a)
Console.WriteLine(a);
}
任何編譯/反編譯回 C# 的工具都會給出等效的方法(發布模式編譯):
private static void PrintDT(DateTime? dt)
{
if (dt.HasValue)
{
DateTime valueOrDefault = dt.GetValueOrDefault();
Console.WriteLine(valueOrDefault);
}
}
或(調試模式編譯)
private static void PrintDT(DateTime? dt)
{
DateTime valueOrDefault;
int num;
if (dt.HasValue)
{
valueOrDefault = dt.GetValueOrDefault();
num = 1;
}
else
num = 0;
if (num == 0)
return;
Console.WriteLine((object) valueOrDefault);
}
因此,編譯器預先使用可空類型的語法糖來在幕后創建優化的場景。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.