關於 as ,is,和強制轉換

2022-07-18 05:30:19 字數 607 閱讀 9590

1.as只能用於引用型別不能用於值型別。

2.操作符 as和 is 都只檢查被轉換物件的執行時型別,並不執行其他的操作

3.is的原理與as類似,不過它返回bool型別,is可與強制型別轉換搭配使用,可避免轉換異常,但最好不要把is和as搭配,實際上is也做了as的轉換操作,這樣會影響效率.

4.如果我們用as來轉換的話,除非myobj1和myobj2有繼承關係,否則轉換將失敗,而用強制型別轉換則不一定,只要myobj1類有自定義型別轉換函式myobj2,則可能轉換成功,因為強制型別轉換針對的是編譯時型別,而對於編譯時型別o1為object型別,並沒有自定義轉換為myobj2的函式.

5.as和強制型別轉換的區別在於,as不會在意是否存在自定義型別轉換函式,它針對的時執行時型別,所以as轉換成功的可能性只有2者具有同一執行時型別,即2者具有相互繼承關係;而強制型別轉換會執行自定義轉換函式,並且它針對的是編譯時型別,所以要注意(2)類似的錯誤.

4.一般情況我們應該先考慮使用as進行型別轉換,然後再考慮使用is,最後才考慮使用強制轉換。

as強制轉換

轉換失敗是否丟擲異常

noyes

支援值型別和引用型別轉換

只支援引用型別

yes

C 的as, is和型別強制轉換

c 的 as,is 和 型別強制轉換 c 是一門強型別語言,一般情況下,我們最好避免將乙個型別強制轉換為其他型別,但有些時候難免要進行型別轉換。先想想究竟哪些操作可以進行型別轉換 先不考慮.net提供的parse 一般我們都有以下選擇 正確的選擇應該是盡可能地使用as操作符,因為它比強制轉型要安全,...

關於強制轉換

1.a和 a的區別 a是整個陣列的首位址,a是陣列首元素的首位址,其值相同,但是意義不同。eg char a 5 char p1 5 a 沒有問題,char p1 5 是陣列指標,指向陣列a 5 的首位址。char p2 5 a 編譯出錯,提示型別無法從 char 5 轉換為 char 5 需要把a...

關於強制型別轉換

var dump 0 null false var dump 0 0 true var dump 0 false var dump 0 false true var dump 0 null true var dump 0 0 true var dump 0 true var dump 0 false...