C 中using和new的用法

2021-05-27 13:41:02 字數 2808 閱讀 4686

using

根據微軟msdn上的解釋,c#中的using共有三種用途:引用命名空間、為命名空間或型別建立別名、使用using語句。

1、引用命名空間

用using來引用命名空間,可以直接在程式中使用命名空間下的型別而不必指定詳細的命名空間,如:using system.servicemodel等等。

2、為命名空間或型別建立別名

當乙個類引用了不同的命名空間,但這些命名空間都包括了乙個相同名字的型別時,可以使用using關鍵字來建立別名,這樣會使**更簡潔。注意:並不是說兩個型別名字重複,給其中乙個使用了別名,另外乙個就不需要用別名了,如果兩個型別都要在該類中使用,則兩個都需要用using來定義別名,如下:

using system;

using system.collections.generic;

using system.text;

} using system;

using system.collections.generic;

using system.text;

} //在程式中使用using為兩個相同名字的型別定義別名

using system;

using system.collections.generic;

using system.text;

namespace usingtest

} } 3、使用using語句,定義乙個範圍,在範圍結束時清理物件。(注意:該物件必須實現了idisposable介面)。其功能和try-->catch-->finally完全相同。如:

string strcon = "data source=.;initial catalog=wcfpt;uid=sa;pwd=sa";  

using (sqlconnection sqlcon = new sqlconnection(strcon))

注:這裡sqlconnection預設實現了idisposable介面,如果是自己寫的類,那就要自己動手來實現idisposable介面。

使用using語句需要注意的幾點:

(1)物件必須實現idisposable介面,否則編譯器會報錯誤,如:

//不能被編譯 

(2)using物件檢查是靜態型別檢查,並不支援執行時型別檢查,因此如下錯誤也會出現編譯錯誤:

string strcon = "data source=.;initial catalog=wcfpt;uid=sa;pwd=sa";  

sqlconnection sqlcon = new sqlconnection(strcon);

object objcon = sqlcon;

//不能被編譯

但是可以通過「as」進行型別轉換的方式來改進,如下:

string strcon = "data source=.;initial catalog=wcfpt;uid=sa;pwd=sa";  

sqlconnection sqlcon = new sqlconnection(strcon);

object objcon = sqlcon;

//可以被編譯

using (objcon as idisposable)

(3)當同時需要釋放多個資源時,並且物件型別不同,可以這樣寫:

string strcon = "data source=.;initial catalog=wcfpt;uid=sa;pwd=sa";  

string strcmd = "delete from t_employee";

using (sqlconnection sqlcon = new sqlconnection(strcon))

using (sqlcommand sqlcmd = new sqlcommand(strcmd, sqlcon))

如果物件型別相同,可以寫到一起:

using (font myfont1 =new font("arial",10.0f),myfont2 = new font("arial",10.0f))  

(4)using關鍵字只是針對c#語句,對於vb等其他語言還沒有對應的功能。

new

new的幾種用法有:new運算子(用於建立物件和呼叫建構函式)、new修飾符(用於隱藏基類成員的繼承成員)、new約束(用於在泛型宣告中約束可能用作型別引數的引數的型別)等。

1、new運算子

(1)用於建立物件和呼叫建構函式,如:

myclass classa=new myclass();

(2)用於為值型別呼叫預設的建構函式,如:

int myint=new int();

myint初始化為0,它是int型別的預設值。該語句的效果等同於:int myint=0;

(3)、不能過載new運算子。

(4)、如果new運算子分配記憶體失敗,則它將引發outofmemoryexception異常。

2、new修飾符

使用new修飾符可以顯式隱藏從基類繼承的成員。若要隱藏繼承的成員,請使用相同名稱在派生類中宣告該成員。

C 中的using和namespace用法

using 第一,引用程式集 即namespace 1 using system 宣告了程式中用到的乙個命名空間 system 我們可以不需要申明這個空間名稱就能直接使用這個空間裡面的類了。console.writeline hello 2 using io system.io 給命名空間 syst...

C 中using的用法

遇到過很多次using,但對於using到底有哪些用法一直沒有去了解過,通過學習,了解到using的三種用法,下面一一介紹 使用using匯入命名空間,這是一種最常見的用法了。using 命名空間名字,這樣可以在程式中直接用命令空間中的型別,而不必指定型別的詳細命名空間 如 using system...

請問NEW和USING的區別?

請問new和using的區別?很多公司的面試都可能問或是考查這個看似基礎的東西,恕我渾渾噩噩,我可能回答的不夠好!習慣性質的是由於我可能知道一些東西,但由於事務纏身,並沒有去過多的關注部分細節,其間也沒有得到某些無意或是有意的灌輸,我可能會回答區別在於乙個不會自動釋放資源,乙個會。那using為甚麼...