自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C# new()約束簡單介紹

開發(fā) 后端
這里介紹對于C# new()約束,大家可能有一個(gè)誤解,以為使用了C# new約束之后,在創(chuàng)建對象時(shí)與非泛型的版本是一致的。

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

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

 

  1. public class Tester<T> 
  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.  

 

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

 

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


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

 

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


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

【編輯推薦】

  1. C# 3.0編譯器簡單介紹
  2. C#使用函數(shù)重載學(xué)習(xí)筆記
  3. Visual C#對數(shù)據(jù)庫處理概述
  4. C#具有隱式類型聲明描述
  5. C#使用SharpZipLib分析
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-26 14:54:23

C# new和over

2009-08-03 17:51:43

C#引用類型

2009-08-06 18:15:13

C# SQL Serv

2009-08-07 17:12:07

C# DLL函數(shù)

2009-08-13 17:36:54

編譯C#代碼

2009-08-14 16:46:44

C#元數(shù)據(jù)

2009-08-20 16:25:59

C# 匿名方法

2009-08-25 13:38:35

C# Timer組件

2009-09-03 09:40:57

C#創(chuàng)建表單

2009-08-07 17:41:40

C#預(yù)處理

2009-08-27 10:19:22

C#匿名類型

2009-08-06 14:53:41

C# User類

2009-08-10 16:19:37

C#冒泡排序

2009-08-14 17:27:56

C#方法參數(shù)

2009-08-18 17:37:57

C#固定指針

2009-08-21 17:55:52

C#復(fù)合控件

2009-08-25 14:42:41

由C++轉(zhuǎn)向C#

2009-08-26 13:24:54

C#字符串

2009-08-27 13:37:11

C#類和結(jié)構(gòu)

2009-09-02 14:33:57

C#類實(shí)現(xiàn)接口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號