不能忽略c#中的using和as操作符的用處
其實(shí)這2個(gè)操作符在小處非常有用。
1、using
按照msdn的解釋
using 語(yǔ)句定義一個(gè)范圍,在此范圍的末尾將處理對(duì)象。
舉例:
class TestUsing:IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
public void Method()
{
Console.WriteLine("Do a method");
}
}
調(diào)用這個(gè)類:
using(TestUsing tu=new TestUsing())
{
tu.Method();
}
可以看到先后輸出了Do a method和Dispose。
備注:實(shí)例化的對(duì)象必須實(shí)現(xiàn) System.IDisposable 接口
2、as
msdn這么說(shuō):
as 運(yùn)算符用于執(zhí)行可兼容類型之間的轉(zhuǎn)換。
as 運(yùn)算符類似于類型轉(zhuǎn)換,所不同的是,當(dāng)轉(zhuǎn)換失敗時(shí),as 運(yùn)算符將產(chǎn)生空,而不是引發(fā)異常。在形式上,這種形式的表達(dá)式:
expression as type
等效于:
expression is type ? (type)expression : (type)null
只是 expression 只被計(jì)算一次。
請(qǐng)注意,as 運(yùn)算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運(yùn)算符無(wú)法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用 cast 表達(dá)式來(lái)代替其執(zhí)行。
舉例:
object [] arr=new object[2];
arr[0]=123;
arr[1]="test";
foreach(object o in arr)
{
string s=(string)o;
Console.WriteLine(s);
}
這樣的代碼在轉(zhuǎn)換類型失敗的時(shí)候引發(fā)異常,代碼修改成:
object [] arr=new object[2];
arr[0]=123;
arr[1]="test";
for(int i=0;i<arr.Length;i++)
{
string s=arr[i] as string;
if(s!=null)Console.WriteLine(i+":"+s);
} 可以看到輸出了1:test,雖然arr[0]處轉(zhuǎn)換失敗但是沒(méi)有引發(fā)異常而是返回了null
備注:as必須和引用類型一起使用(int等值類型不能使用)
相關(guān)文章
ASP.NET?Core實(shí)現(xiàn)動(dòng)態(tài)獲取文件并下載
這篇文章介紹了ASP.NET?Core實(shí)現(xiàn)動(dòng)態(tài)獲取文件并下載的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01ASP.NET Core應(yīng)用錯(cuò)誤處理之ExceptionHandlerMiddleware中間件呈現(xiàn)“定制化錯(cuò)誤頁(yè)面”
這篇文章主要給大家介紹了關(guān)于ASP.NET Core應(yīng)用錯(cuò)誤處理之ExceptionHandlerMiddleware中間件呈現(xiàn)“定制化錯(cuò)誤頁(yè)面”的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧2019-01-01VS2017做為Unity3D的腳本編輯器需要的最精簡(jiǎn)組件
這篇文章主要為大家詳細(xì)介紹了VS2017做為Unity3D的腳本編輯器需要的最精簡(jiǎn)組件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04asp.net 安全的截取指定長(zhǎng)度的html或者ubb字符串
在將html代碼輸出到頁(yè)面時(shí),有時(shí)候會(huì)需要截?cái)嘧址A糁付ㄩL(zhǎng)度的字符串,由于html中有些標(biāo)簽必須成對(duì)出現(xiàn),所以在截取html時(shí)需要特別注意,不能因?yàn)榻財(cái)鄦?wèn)題把頁(yè)面搞亂掉。2010-01-01ASP.NET堆和棧四之對(duì)托管和非托管資源的垃圾回收和內(nèi)存分配
這篇文章介紹了.NET堆和棧中對(duì)托管和非托管資源的垃圾回收和內(nèi)存分配,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08IE和火狐中模仿Click事件及提交到新窗口總結(jié)(asp.net)
在程序中去模擬一個(gè)click事件是可以的,如果這個(gè)click事件是來(lái)自<a>標(biāo)簽的,那如果希望得到單擊按鈕的效果,IE可以,但火狐無(wú)法實(shí)現(xiàn)2012-01-01.net core使用FastHttpApi構(gòu)建web聊天室實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于.net core使用FastHttpApi構(gòu)建web聊天室的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-10-10ASP.NET編程簡(jiǎn)單實(shí)現(xiàn)生成靜態(tài)頁(yè)面的方法【附demo源碼下載】
這篇文章主要介紹了ASP.NET編程簡(jiǎn)單實(shí)現(xiàn)生成靜態(tài)頁(yè)面的方法,較為詳細(xì)的分析了asp.net生成靜態(tài)頁(yè)面的步驟與相關(guān)操作技巧,并附帶相關(guān)實(shí)例源碼供讀者下載參考,需要的朋友可以參考下2017-07-07