不能忽略c#中的using和as操作符的用處

來源:互聯網
上載者:User

是不是很多人不用c#中的using和as操作符?甚至不知道?
其實這2個操作符在小處非常有用。

1、using
按照msdn的解釋

using 語句定義一個範圍,在此範圍的末尾將處理對象。
舉例:

class TestUsing:IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}

public void Method()
{
Console.WriteLine("Do a method");
}
}
調用這個類:

using(TestUsing tu=new TestUsing())
{
tu.Method();
}
可以看到先後輸出了Do a method和Dispose。
備忘:執行個體化的對象必須實現 System.IDisposable 介面

2、as
msdn這麼說:

as 運算子用於執行可相容類型之間的轉換。
as 運算子類似於類型轉換,所不同的是,當轉換失敗時,as 運算子將產生空,而不是引發異常。在形式上,這種形式的運算式:

expression as type
等效於:

expression is type ? (type)expression : (type)null
只是 expression 只被計算一次。

請注意,as 運算子只執行引用轉換和裝箱轉換。as 運算子無法執行其他轉換,如使用者定義的轉換,這類轉換應使用 cast 運算式來代替其執行。

舉例:
object [] arr=new object[2];
arr[0]=123;
arr[1]="test";
foreach(object o in arr)
{
string s=(string)o;
Console.WriteLine(s);
}
這樣的代碼在轉換類型失敗的時候引發異常,代碼修改成:
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]處轉換失敗但是沒有引發異常而是返回了null

備忘:as必須和參考型別一起使用(int等實值型別不能使用)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.