.net中as和is之間的區(qū)別分析
1、as
用于在兼容的引用類型之間執(zhí)行轉(zhuǎn)換,as 運(yùn)算符類似于強(qiáng)制轉(zhuǎn)換操作;但是,如果轉(zhuǎn)換不可行,as 會返回 null 而不是引發(fā)異常。更嚴(yán)格地說,這種形式的表達(dá)式:expression as type,等效于expression is type ? (type)expression : (type)null,只是 expression 只被計(jì)算一次。注意,as 運(yùn)算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運(yùn)算符無法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用 cast 表達(dá)式來執(zhí)行 as操作符不會做過的轉(zhuǎn)換操作,當(dāng)需要轉(zhuǎn)化對象的類型屬于轉(zhuǎn)換目標(biāo)類型或者轉(zhuǎn)換目標(biāo)類型的派生類型時(shí),那么此轉(zhuǎn)換操作才能成功。
效率:
當(dāng)用as操作符進(jìn)行類型轉(zhuǎn)換的時(shí)候,首先判斷當(dāng)前對象的類型, 當(dāng)類型滿足要求后才進(jìn)行轉(zhuǎn)換,而傳統(tǒng)的類型轉(zhuǎn)換方式,是用當(dāng)前對象直接去轉(zhuǎn)換, 而且為了保護(hù)轉(zhuǎn)換成功,要加上try-catch. 而且并不產(chǎn)生新的對象【當(dāng)不成功的時(shí)候,會返回null】。 相對來說,as效率高點(diǎn),用as進(jìn)行類型轉(zhuǎn)換是安全的。 實(shí)例: e.Item.DataItem as DataRowView 同等 (DataRowView)e.Item.DataItem
2、is
檢查對象是否與給定類型兼容,例如:if(obj is string){}。如果所提供的表達(dá)式非空,并且所提供的對象可以強(qiáng)制轉(zhuǎn)換為所提供的類型而不會導(dǎo)致引發(fā)異常,則 is 表達(dá)式的計(jì)算結(jié)果將是 true。如果已知表達(dá)式將始終是 true 或始終是 false,則 is 關(guān)鍵字將導(dǎo)致編譯時(shí)警告,但是,通常在運(yùn)行時(shí)才計(jì)算類型兼容性。不能重載 is 運(yùn)算符。請注意,is 運(yùn)算符只考慮引用轉(zhuǎn)換、裝箱轉(zhuǎn)換和取消裝箱轉(zhuǎn)換。
- ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(二)
- ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)
- asp.net中virtual和abstract的區(qū)別分析
- Asp.net中Response.Charset與Response.ContentEncoding區(qū)別示例分析
- c#.net中const和readonly的區(qū)別
- 詳細(xì)說明asp.net中datareader 和 dataset 的區(qū)別
- asp.net中DBNull.Value,null,String.Empty區(qū)別淺析
- asp.net 中靜態(tài)方法和動態(tài)方法調(diào)用的區(qū)別實(shí)例分析
- ASP.NET筆記之 控件與母板的區(qū)別分析
- .net中的session與cookies區(qū)別及使用方法
- .NET MVC中ViewData,ViewBag和TempData的區(qū)別淺析
相關(guān)文章
ASP.NET過濾HTML標(biāo)簽只保留換行與空格的方法
這篇文章主要介紹了ASP.NET過濾HTML標(biāo)簽只保留換行與空格的方法,包含網(wǎng)上常見的方法以及對此方法的改進(jìn),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12JWT + ASP.NET MVC時(shí)間戳防止重放攻擊詳解
這篇文章主要給大家介紹了關(guān)于JWT + ASP.NET MVC時(shí)間戳防止重放攻擊發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
要想在ASP.NET中操作SQL數(shù)據(jù)庫首先需要在WebConfig中配置數(shù)據(jù)庫連接字符串,之后在.cs文件中獲取連接字符串,具體的配置及獲取方法如下,感興趣的朋友可以參考下哈2013-06-06分享AjaxPro或者Ajax實(shí)現(xiàn)機(jī)制
今天與大家分享AjaxPro或者Ajax實(shí)現(xiàn)機(jī)制,需要的朋友可以參考下。2011-12-12ASP.NET技巧:教你制做Web實(shí)時(shí)進(jìn)度條
ASP.NET技巧:教你制做Web實(shí)時(shí)進(jìn)度條...2006-09-09C# 接口的隱式與顯示實(shí)現(xiàn)及適應(yīng)場景
以前在用到接口時(shí),從來沒注意到接口分為隱式實(shí)現(xiàn)與顯示實(shí)現(xiàn)。昨天在瀏覽博客時(shí)看到相關(guān)內(nèi)容,現(xiàn)在根據(jù)自己的理解記錄一下,方便日后碰到的時(shí)候溫習(xí)溫習(xí),需要的朋友可以了解下2012-12-12MVC后臺創(chuàng)建Json(List)前臺接受并循環(huán)讀取實(shí)例
MVC后臺創(chuàng)建Json(List)同時(shí)前臺接受并循環(huán)讀取,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈,希望對大家有所幫助2013-06-06