title
author
date
createtime
categories
c# 強轉空會不會出現異常
lindexi
2019-10-31 8:53:6 +0800
2019-9-10 11:41:7 +0800
c#
有小夥伴問我強轉 null 會不會出現異常,我告訴他,如果是引用型別那麼不會,如果是值型別,那麼會出現空異常
如果是引用型別,只要是空型別,是支援隨意轉換,如下面**,這是可以執行
classprogram
}class
foo
如果使用值型別轉換,那麼將會出現空異常,例如我定義乙個列舉
enumnerefiweakawbejairlalhu
下面**執行的時候會提示
system.nullreferenceexception:「objectreference
notset
toan
instance
ofan
object.」
也就是如果你看到了泛型的轉換,請確定泛型不會傳入值型別
classfoo}
上面**如果使用者傳入了值型別,例如 列舉 作為泛型,那麼呼叫 cast 傳入空的值,將會提示物件為空,所以在使用泛型轉換的時候,可能強轉為空
如果此時將強轉換為 as 關鍵字,將會提示 由於型別引數「t」既沒有類型別約束也沒有「class」約束,因此不能與「as」運算子一起使用
如果要給泛型約束只能給引用型別用,那麼**上 class 條件
classfoo where
t : class
如果需要給值型別用,請使用下面**
classfoo where
t : struct
如果看到了乙個 obj 強轉乙個值型別,那麼在 obj 為空的時候出現異常,推薦的方法是通過 is 關鍵字,在 c# 7.0 的時候可以使用 is 匹配,請看下面**
classfoo 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...