不能忽略c#中的using和as操作符的用處
更新時(shí)間:2007年02月28日 00:00:00 作者:
是不是很多人不用c#中的using和as操作符?甚至不知道?
其實(shí)這2個操作符在小處非常有用。
1、using
按照msdn的解釋
using 語句定義一個范圍,在此范圍的末尾將處理對象。
舉例:
class TestUsing:IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
public void Method()
{
Console.WriteLine("Do a method");
}
}
調(diào)用這個類:
using(TestUsing tu=new TestUsing())
{
tu.Method();
}
可以看到先后輸出了Do a method和Dispose。
備注:實(shí)例化的對象必須實(shí)現(xiàn) System.IDisposable 接口
2、as
msdn這么說:
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ì)算一次。
請注意,as 運(yùn)算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運(yùn)算符無法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用 cast 表達(dá)式來代替其執(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)換失敗但是沒有引發(fā)異常而是返回了null
備注:as必須和引用類型一起使用(int等值類型不能使用)
其實(shí)這2個操作符在小處非常有用。
1、using
按照msdn的解釋
using 語句定義一個范圍,在此范圍的末尾將處理對象。
舉例:
class TestUsing:IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
public void Method()
{
Console.WriteLine("Do a method");
}
}
調(diào)用這個類:
using(TestUsing tu=new TestUsing())
{
tu.Method();
}
可以看到先后輸出了Do a method和Dispose。
備注:實(shí)例化的對象必須實(shí)現(xiàn) System.IDisposable 接口
2、as
msdn這么說:
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ì)算一次。
請注意,as 運(yùn)算符只執(zhí)行引用轉(zhuǎn)換和裝箱轉(zhuǎn)換。as 運(yùn)算符無法執(zhí)行其他轉(zhuǎn)換,如用戶定義的轉(zhuǎn)換,這類轉(zhuǎn)換應(yīng)使用 cast 表達(dá)式來代替其執(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)換失敗但是沒有引發(fā)異常而是返回了null
備注:as必須和引用類型一起使用(int等值類型不能使用)
相關(guān)文章
利用ASP.NET MVC+Bootstrap搭建個人博客之praise.js點(diǎn)贊特效插件(二)
這篇文章主要介紹了利用ASP.NET和MVC+Bootstrap搭建個人博客之praise.js點(diǎn)贊特效插件(二)的相關(guān)資料,需要的朋友可以參考下2016-06-06
ASP.NET Core使用微軟官方類庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core使用微軟官方類庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
VB.NET生成隨機(jī)串或隨機(jī)數(shù)字的方法總結(jié)
本篇文章主要介紹了VB.NET生成隨機(jī)串或隨機(jī)數(shù)字的方法,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
Asp.net中使用DapperExtensions和反射來實(shí)現(xiàn)一個通用搜索
這篇文章主要介紹了Asp.net中使用DapperExtensions和反射來實(shí)現(xiàn)一個通用搜索功能,非常不錯,具有參考解決價(jià)值,需要的朋友可以參考下2017-03-03
ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤之下載或在線查看實(shí)現(xiàn)代碼
在目錄瀏覽中,如果選擇的是一個文件,單擊“打開”按鈕就可以進(jìn)行文件下載2012-10-10
asp.net core下給網(wǎng)站做安全設(shè)置的方法詳解
這篇文章主要給大家介紹了關(guān)于asp.net core下給網(wǎng)站做安全設(shè)置的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

