is和as操作符的使用

2022-03-07 06:18:22 字數 1922 閱讀 8987

型別安全是

clr中非常重要的乙個特性,由於在

.net

中所有的型別繼承自

system.object

,而object

物件又有

gettype()

,並且這個方法是非虛方法,我們是不能重寫的。這樣就充分的保證了物件的型別安全,也就能輕而易舉的獲取物件的精確型別,討論is和

as關鍵字的使用,首先要深刻的理解

.net

的型別轉換,is和

as關鍵字的作用就是方便我們進行型別轉換!

型別轉換

將某乙個型別轉換成其他的型別是我們經常要做的事情,型別轉換總的概括起來可以非常兩種,就是隱式轉換和顯示轉換。

l隱式轉換:將某乙個物件轉換成它的基型別,這種轉換在

c#中被認為是安全,所以不需要任何特殊的操作。稱為隱式轉換。

l顯示轉換:相反,在將任何物件轉換成它的派生型別時,

c#要求使用特殊的語法,進行顯示的轉換,因為這種轉換可能伴隨有錯誤發生。

下面通過**的形式講解上面的兩個概念,儘管有些過於簡單了。

//student

型別隱含的繼承自system.object型別

public

class

student

//顯示轉換,因為需要將子類的例項轉換成它的父類

public

class

teacher:student

public

class

program

}在執行時,clr會檢查操作,以確

保會將物件總是轉換成它的實際型別,獲取它的基型別。這正是.net框架中的型別安全,也是.net框架中非常重要的一部分

,也是我們日常程式設計中需要經常使用的。

is和as操作符的使用

c#提供了is和as操作符進行型別轉換,他們有個共同的特點:就是永遠不會丟擲異常!lis

:檢查物件和給定的型別是否相容,如果不相容或者引用的物件為空,就返回false,如果型別相容就返回true。las

:也是檢查物件和給定的型別是否相容,和is不相同的是它在轉換失敗時,返回的是null!後面的**中大家可以體會到,as的效能要比is操作符稍好一些!

下面還是通過**的形式講解上面的兩個概念。

teacher teacher = new

teacher();

//b1

為true

system.boolean b1 = (teacher is

student);

//b2

為false

student student = new

student();

system.boolean b2 = (student is

teacher);

下面是is操作符的典型用法,

//判斷student能夠轉換成teacher型別的物件

if (student is

teacher)

在上面的**中大家可以看到,要想使用轉後的例項,clr實際上進行了兩次檢查操作!is操作符首先檢查student所引用的物件是否和teacher相容,如果相容,在if語句內部,clr在進行轉換時又會檢查student是否是乙個teacher引用。

下面是as操作符的典型使用方法,大家可以看到,as操作符提供了更好的效能!

//clr

檢查student所引用的物件是否和teacher相容!

teacher teacher = student as

teacher;

if (teacher != null)

注意在as操作符的轉換中clr只檢查了一次,而is則檢查了兩次,效能獲得了少許的提高!使用as操作符一定要進行非空型別檢查,否則會丟擲system.nullreferenceexception

異常!千言萬語歸結為一句話,is用於判斷,as用於轉換!

MySQL的and操作符和or操作符

有時對where的要篩選的列不止乙個時,那麼就用到了and操作符和or操作符,and操作符顧名思義的意思是 並且 而or操作符的意思是 或者 比如以部門員工表為例 查詢部門編號為d001並且入職日期為 1985 02 02的員工編號,那麼就要用到and操作符 那如果是查詢部門編號為d001或者入職日...

指標用操作符 和 ,引用使用操作符

指標與引用看上去完全不同 指標用操作符 和 引用使用操作符 但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他物件。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。乙個引用必須總是指向某些物件。因此如果你使用乙個變數並讓它指向乙個物件,但是...

操作符使用

1.寫乙個函式返回引數二進位制中 1 的個數 比如 15 0000 1111 4 個 1 程式原型 int count one bits unsigned int value include include pragma warning disable 4996 方法一 int count one ...