C 中的is和as的轉型區別

2022-03-31 01:37:20 字數 764 閱讀 6697

摘自clr via c#第三版第四章

在c#中is可以用來判斷乙個物件是否相容給定的型別,如果是返回true,否則返回false。

同時is是永不會丟擲異常的。如果物件引用是null,is操作符總是返回false。

object o = new

object();

boolean b1 = (o is object); //

返回true

boolean b1 = (o is employee); //

返回false

一般is操作符的使用方式如下

//

先進行判斷

if( o is

employee)

在該過程中clr實際會檢查兩次物件型別,首先is操作符檢查o是否相容employee,如果是在if內部

clr會再次核實o是否引用乙個employee。這會對效能造成一定影響。這是因為clr首先必須判斷o引用的

物件實際的型別,然後遍歷繼承層次結構,用每個基型別去核對。

c#提供了as操作符來簡化這種**的寫法,來提高效能。

employee e = o as

employee;

if(e !==null

)

如果o相容於employee,as會返回同乙個物件的非null引用。如果不相容,會返回null。as操作符clr只會校驗一次物件的型別。

同時它也永遠不會丟擲異常,所以要檢查生成的引用是否為null。

java中的向上轉型和向下轉型

向下轉型 子類引用指向父類引用的子類物件,有點抽象,下面會舉個例子 向上轉型 父類引用指向子類的物件時稱為向上轉型 employee employee new manager 向上轉型 manager manager manager employee 向下轉型 編譯 執行通過,因為employee本...

多型中的向上轉型和向下轉型

多型的好處 a 提高了 的維護性 繼承保證 b 提高了 的擴充套件性 由多型保證 父類是不能呼叫子類獨有的方法的,如果想呼叫,那麼只能父類轉成子類 向下轉型 public class extendtest class son extends father public void playgame p...

多型中的向上轉型和向下轉型

package ren.redface.demo 多型中的向上轉型和向下轉型 引用型別之間的轉換 向上轉型 由小到大 子型別轉換成父型別 向下轉型 由大到小 基本資料型別的轉換 自動型別轉換 由小到大 byte short char int long float double 強制型別轉換 由大到小...