簡體   English   中英

在轉換時使用“is”關鍵字,然后檢查null

[英]“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次強制轉換 - 一次檢查對象是否屬於該類型,然后是第二次實際捕獲轉換值。

請參閱此

請參閱此

我想在這里簡單地向你解釋一下

 Person obj = new Person();
 if (obj is Person && obj!=null){};

Is檢查類型,它會返回一個布爾值是真還是假。 操作員是否從不拋出錯誤。 引用元數據找出找到對象的類型然后它將返回true否則返回false。

Person obj = null;
if (obj is Person){//return always false}

如果你嘗試上面的代碼是返回總是返回false。

obj!=null

!=是不等運算符,如果其操作數不相等,則返回true,否則返回false。

參考文件“是”

平等運營商

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM