C 強轉空會不會出現異常

2022-01-14 07:22:46 字數 1053 閱讀 2216

有小夥伴問我強轉 null 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果是值型別,那麼會出現空異常

如果是引用型別,只要是空型別,是支援隨意轉換,如下面**,這是可以執行

class

program

}class

foo

如果使用值型別轉換,那麼將會出現空異常,例如我定義乙個列舉

enum nerefiweakawbejairlalhu

下面**執行的時候會提示

system.nullreferenceexception:「object reference not set to an instance of an object

.」

也就是如果你看到了泛型的轉換,請確定泛型不會傳入值型別

class

foo}

上面**如果使用者傳入了值型別,例如 列舉 作為泛型,那麼呼叫 cast 傳入空的值,將會提示物件為空,所以在使用泛型轉換的時候,可能強轉為空

如果此時將強轉換為 as 關鍵字,將會提示 由於型別引數「t」既沒有類型別約束也沒有「class」約束,因此不能與「as」運算子一起使用

如果要給泛型約束只能給引用型別用,那麼**上 class 條件

class

foowhere t :

class

如果需要給值型別用,請使用下面**

class

foowhere t :

struct

如果看到了乙個 obj 強轉乙個值型別,那麼在 obj 為空的時候出現異常,推薦的方法是通過 is 關鍵字,在 c# 7.0 的時候可以使用 is 匹配,請看下面**

class

foowhere t :

struct

}}

當前,請記得加上 else 提示使用者傳入的值不能強轉傳入的型別

2019 10 31 C 強轉空會不會出現異常

title author date createtime categories c 強轉空會不會出現異常 lindexi 2019 10 31 8 53 6 0800 2019 9 10 11 41 7 0800 c 有小夥伴問我強轉 null 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果...

2019 10 31 C 強轉空會不會出現異常

title author date createtime categories c 強轉空會不會出現異常 lindexi 2019 10 31 8 53 6 0800 2019 9 10 11 41 7 0800 c 有小夥伴問我強轉 null 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果...

關於C 數強轉會不會丟擲異常詳解

前言 在程式設計的過程中我們都知道有些錯誤是難以避免的,為了避免錯誤所帶來的程式不友好所以程式當中引入了異常處理機制,又因為資料型別奇多和處理方式不同,應要求又有了資料轉換的機制。最近遇到乙個小夥伴問我,從乙個很大的數強轉,會不會丟擲異常。實際上不會出現異常。最簡單的 是使用乙個比 maxvalue...