不要忽略c#中的using和as操作符(轉)

不要忽略c#中的using和as操作符
作者:未知
日期:2005-05-27
人氣: 131
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:

是不是很多人不用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等值類型不能使用)
相關文章:
特別聲明: 本站除部分特別聲明禁止轉載的專稿外的其他文章可以自由轉載,但請務必註明出處和原始作者。文章版權歸文章原始作者所有。對於被本站轉載文章的個人和網站,我們表示深深的謝意。如果本站轉載的文章有版權問題請聯繫編輯人員,我們儘快予以更正。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章