C# 泛型類(函數(shù))的實(shí)例化小例子
泛型可以用于類,也可以用于函數(shù)。如
泛型類:
public class MyClass<T>
{
public T MyElement { get; set; }
}
泛型函數(shù):
public T ReturnElement<T>()
{
throw new NotImplementedException();
}
但是當(dāng)需要對(duì)MyElement進(jìn)行實(shí)例化的時(shí)候,卻不能使用new(),只要添加如下代碼即可進(jìn)行實(shí)例化了:
泛型類:
public class MyClass<T> where T: new()
{
public T MyElement { get; set; }
public MyClass()
{
this.MyElement = new T();
}
}
泛型函數(shù):
public T ReturnElement<T>() where T : new()
{
return new T();
}
在這里,where實(shí)際上對(duì)泛型類型T的一個(gè)限定或補(bǔ)充。如果你希望T是一個(gè)int的集合,這個(gè)集合可以是List<int>,也可以是HashSet<int>等等,只要它們都是從ICollection繼承而來的,則可以添加對(duì)類型T的限定,同時(shí)要保證它還是可以實(shí)例化的:
public T ReturnElement<T>()
where T : ICollection<int>, new()
{
return new T();
}
進(jìn)一步,如果希望放寬集合中元素的類型,比如只要是int,double等可比較的類型,它們都是從IComparable繼承而來,則可以繼續(xù)添加如下限定:
public T ReturnElement<T, S>()
where T : ICollection<S>, new()
where S : IComparable
{
return new T();
}
C# 的泛型類型提供了很方便的機(jī)制,非常方便地就能舉一反三。
相關(guān)文章
C#通過配置文件動(dòng)態(tài)修改web.config內(nèi)容的操作步驟
這篇文章主要介紹了C#通過配置文件動(dòng)態(tài)修改web.config內(nèi)容的操作步驟,文中通過圖文結(jié)合的方式介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-03-03
C#/VB.NET實(shí)現(xiàn)HTML轉(zhuǎn)為XML的示例代碼
可擴(kuò)展標(biāo)記語言(XML)文件是一種標(biāo)準(zhǔn)的文本文件,它使用特定的標(biāo)記來描述文檔的結(jié)構(gòu)以及其他特性。本文將利用C#實(shí)現(xiàn)HTML轉(zhuǎn)為XML,需要的可以參考一下2022-06-06
C#實(shí)現(xiàn)winform中RichTextBox在指定光標(biāo)位置插入圖片的方法
這篇文章主要介紹了C#實(shí)現(xiàn)winform中RichTextBox在指定光標(biāo)位置插入圖片的方法,涉及RichTextBox控件及剪切板的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2016-06-06
C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫及表的方法
這篇文章主要介紹了C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫及表的方法,以實(shí)例形式分析了創(chuàng)建access數(shù)據(jù)庫及在access數(shù)據(jù)庫中建表的完整過程,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
WinForm特效之桌面上的遮罩層實(shí)現(xiàn)方法
這篇文章主要介紹了WinForm特效之桌面上的遮罩層實(shí)現(xiàn)方法,是一個(gè)非常實(shí)用的技巧,需要的朋友可以參考下2014-09-09

