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

2022-01-12 23:46:25 字數 1210 閱讀 9626

title

author

date

createtime

categories

c# 強轉空會不會出現異常

lindexi

2019-10-31 8:53:6 +0800

2019-9-10 11:41:7 +0800

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

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

class

program

}class

foo

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

enum

nerefiweakawbejairlalhu

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

system.nullreferenceexception:「object

reference

notset

toan

instance

ofan

object.」

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

class

foo}

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

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

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

class

foo where

t : class

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

class

foo where

t : struct

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

class

foo where

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 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果...

C 強轉空會不會出現異常

有小夥伴問我強轉 null 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果是值型別,那麼會出現空異常 如果是引用型別,只要是空型別,是支援隨意轉換,如下面 這是可以執行 class program class foo如果使用值型別轉換,那麼將會出現空異常,例如我定義乙個列舉 enum ner...

C 四種強轉

標準c 中有四個型別轉換符 static cast dynamic cast reinterpret cast 和const cast。reinterpret cast轉換是在類c轉換的基礎上,在編譯期間,約束了整型 浮點型和列舉型別的相互轉換。用法 reinpreter cast expressi...