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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺析C#泛型約束中的構(gòu)造函數(shù)約束

C# 泛型約束中的構(gòu)造函數(shù)約束使用 C# 泛型,編譯器會(huì)將一般代碼編譯為 IL,而不管客戶端將使用什么樣的類型實(shí)參。因此,一般代碼可以嘗試使用與客戶端使用的特定類型實(shí)參不兼容的一般類型參數(shù)的方法、屬性或成員。這是不可接受的,因?yàn)樗喈?dāng)于缺少類型安全。在 C# 中,您需要通知編譯器客戶端指定的類型必須遵守哪些約束,以便使它們能夠取代一般類型參數(shù)而得到使用。存在三個(gè)類型的約束。構(gòu)造函數(shù)約束指示編譯器一般類型參數(shù)派生自諸如接口或特定基類之類的基類型。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了利川免費(fèi)建站歡迎大家使用!

默認(rèn)構(gòu)造函數(shù)約束指示編譯器一般類型參數(shù)公開了默認(rèn)的公共構(gòu)造函數(shù)(不帶任何參數(shù)的公共構(gòu)造函數(shù))。引用/值類型約束將一般類型參數(shù)約束為引用類型或值類型。一般類型可以利用多個(gè)約束,您甚至可以在使用一般類型參數(shù)時(shí)使 IntelliSense 反射這些約束,例如,建議基類型中的方法或成員。

C# 泛型約束中的構(gòu)造函數(shù)約束的理解:

假設(shè)您要在一般類的內(nèi)部實(shí)例化一個(gè)新的一般對(duì)象。問題在于,C# 編譯器不知道客戶端將使用的類型實(shí)參是否具有匹配的構(gòu)造函數(shù),因而它將拒絕編譯實(shí)例化行。

為了解決該問題,C# 允許約束一般類型參數(shù),以使其必須支持公共默認(rèn)構(gòu)造函數(shù)。這是使用 new() 約束完成的。例如,以下是一種實(shí)現(xiàn)代碼塊 3 中的一般 Node 的默認(rèn)構(gòu)造函數(shù)的不同方式。

C# 泛型約束中的構(gòu)造函數(shù)約束的實(shí)例:

 
 
 
  1. class Node where T : new()   
  2. {  
  3.    public K Key;  
  4.    public T Item;  
  5.    public Node NextNode;  
  6.    public Node()  
  7.    {  
  8.       Key      = default(K);  
  9.       Item     = new T();  
  10.       NextNode = null;  
  11.    }  

可以將構(gòu)造函數(shù)約束與構(gòu)造函數(shù)約束組合起來,前提是構(gòu)造函數(shù)約束出現(xiàn)在約束列表中的最后:

 
 
 
  1. public class LinkedList where K : IComparable,new()   
  2. {...} 

C# 泛型約束中的構(gòu)造函數(shù)約束相關(guān)的內(nèi)容就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# 泛型約束中的構(gòu)造函數(shù)約束有所幫助。


當(dāng)前題目:淺析C#泛型約束中的構(gòu)造函數(shù)約束
當(dāng)前鏈接:http://www.5511xx.com/article/cdehigi.html