[英]“is” keyword when casting and then check null
我是C#的新手,只是關於使用“is”關鍵字的問題。 我看到我的一本教科書正在使用:
if (obj is Person && obj != null)
{
...
}
但是obj != null
冗余?
is關鍵字在運行時評估類型兼容性。 它確定是否可以將對象實例或表達式的結果轉換為指定的類型。
if (obj is Person) {
// Do something if obj is a Person.
}
您也可以檢查null。
所以不要執行空檢查。
var obj = new object();
Console.WriteLine(obj is null);
在這種情況下,其他部分將執行。
object obj = null;
if(obj is CustomData)
{
Console.WriteLine("Match");
}
else
{
Console.Write("Null");
}
雖然有用,但我真的建議不要使用它,而是使用as。 as關鍵字是防御性強制轉換,這意味着將嘗試強制轉換,如果無法將對象強制轉換為提供的類型,則返回null。
我建議不要使用它,因為它實際上會導致你執行2次強制轉換 - 一次檢查對象是否屬於該類型,然后是第二次實際捕獲轉換值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.