日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#new()約束簡單介紹

學(xué)習(xí)C#語言時,經(jīng)常會遇到C# new()約束問題,這里將介紹C# new()約束一個誤解問題的解決方法。

對于C# new()約束,大家可能有一個誤解,以為使用了C# new約束之后,在創(chuàng)建對象時與非泛型的版本是一致的:

 
 
 
  1. public class Tester 
  2. where T:new()  
  3. {  
  4. public Tester()  
  5. {  
  6. t = new T();//等同于非泛型版本的new? 例如 object o = new object();?  
  7. }  
  8.  
  9. private T t;  
  10.  

 

事實上,使用new關(guān)鍵字的作用只是讓編譯器在泛型實例化之處,檢查所綁定的泛型參數(shù)是否具有無參構(gòu)造函數(shù):

 
 
 
  1. Tester t = new Tester();  
  2. //此處編譯器會檢查SomeType是否具有無參構(gòu)造函數(shù)。若沒有則會有compile error。 

而Tester類的構(gòu)造函數(shù)中的new代碼,實際上等同于下面的代碼:

 
 
 
  1. public class Tester 
  2. where T:new()  
  3. {  
  4. public Tester()  
  5. {  
  6.  t = System.Activator.CreateInstance();  
  7. }  
  8.  
  9. private T t;  
  10.  

也就是說,仍然是用反射機制來獲取泛型對象的實例的。以上介紹C# new()約束.


新聞名稱:C#new()約束簡單介紹
鏈接地址:http://www.5511xx.com/article/cddejdc.html