關於C 中使用is和as操作符來轉型

2022-02-17 10:42:50 字數 558 閱讀 6311

過去對於這還不是怎麼了解,今天自己細細的讀了這方面的書。所以寫個部落格分享下吧。

在c#語言中進行型別轉換的另一種方式是使用is操作符,is檢查乙個物件是否相容指定的型別,並且返回乙個boolean值,要注意的地方就是is操作符永遠不會丟擲異常。它的用法呢就是諸如這樣:

if(o is student)

在這段**中中clr實際會檢查兩次物件的型別,is操作符首先先核實o是否相容於student型別,如果是,那麼在if語句內部執行轉型時,clr再次核實o是否引用乙個student。可話又說回來了,clr在這是增強了安全性,但是,無疑對效能造成了一定的影響,。這是因為clr首先必須判斷變數0引用的物件的實際型別,之後clr必須遍歷層次結構。但是在c#中還提供了as操作符。其目的就是簡化這種**的寫法,同時呢,也提高了效能

student stu = o as student;

if(stu != null)

as操作符永遠也不會丟擲乙個異常,如果不能轉型則結果就是乙個null,正確的做法就是檢查最終生成的應用是否為null

參考:clr via c#

c 操作符使用

乙個下午的時間總算弄清楚c 各個操作符的使用方法,這個地方一直弄不清楚,今天終於有空把它弄清晰了 一 位操作符 1.操作符 按位與 運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例如 9 5 可寫算式...

C 操作符 和

先看如下 stringstrparam request.params param if strparam null stringstrparam request.params param null?request.params param 你發現,儘管實現的同乙個功能,但第二段 要比第一段 是不是更...

使用 操作符來檢測null和布林false值

php寬鬆的型別系統提供了許多不同的方法來檢測乙個變數的值。然而這也造成了很多問題。使用 來檢測乙個值是否為null或false,如果該值實際上是乙個空字串或0,也會誤報為false。isset是檢測乙個變數是否已賦值,而不是檢測該值是否為null或false,因此在這裡使用是不恰當的。is nul...