這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)C#中泛型約束如何使用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供太平網(wǎng)站建設(shè)、太平做網(wǎng)站、太平網(wǎng)站設(shè)計(jì)、太平網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、太平企業(yè)網(wǎng)站模板建站服務(wù),10多年太平做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
c# where泛型約束:在定義泛型的時(shí)候,我們可以使用where限制參數(shù)的范圍
1:T:類(類型參數(shù)必須是引用類型,這一點(diǎn)也適用于任何類,接口,委托或數(shù)組類型)
class MyClass
where T:class //約束T必須為“引用 類型{}”
where U:struct //約束U必須為“值 類型”
{
//...
}
2:T:結(jié)構(gòu)(類型參數(shù)必須是值類型,可以指定除Nullable以外的任何值類型)
class MyClass
where T:class //約束T必須為“引用 類型{}“
where U:struct //約束U必須為“值類型”
3:T:new()(類型參數(shù)必須具有無(wú)參數(shù)的公共構(gòu)造函數(shù)。當(dāng)與其它一起使用時(shí),new()約束必須最后指定
class EmployeeList
{...}
4:T:<基類名>(類型參數(shù)必須是指定的基類或派生自指定的基類)
class Employee()
class GenericList
5:T:<接口名稱>(參數(shù)必須是指定的接口或?qū)崿F(xiàn)指定的接口。可以指定多個(gè)接口約束。約束接口也可以是泛型)
interface IMyInterface{}
class Dictionary
where TKey:IComparable,IEnumerable
where TVal:IMyInterface
{...}
6:T:U(為T提供的類型參數(shù)必須是為U提供的參數(shù)或派生為U提供的參數(shù),也就是說(shuō)T和U的參數(shù)必須一樣)
class List
{
void Add(List items) where U:T //這種where U:T泛型約束方式以前還沒(méi)有看到,此處的要求就是說(shuō)泛型參數(shù)U必須來(lái)自T或派生自T類型
}
a)可用于類
public class MyGenericClass
b)可用于方法
public boo MyMethod
c)可用于委托
public delegate T MyDelegate
public delegate void MyDelegate
上述就是小編為大家分享的C#中泛型約束如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。