<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          C#中泛型約束的具體用法

          共 2009字,需瀏覽 5分鐘

           ·

          2022-03-08 05:23

          前言

          上一篇博文簡(jiǎn)單介紹了泛型的約束,說(shuō)是通過(guò)where<>來(lái)實(shí)現(xiàn)具體委托占位符的約束。那么約束又有什么類(lèi)型和次序呢。

          這篇文章咱們一起看看。

          目前共5種類(lèi)型的約束。

          • 類(lèi)名:只有這個(gè)類(lèi)型的類(lèi)或從它繼承的類(lèi)才能用作類(lèi)型實(shí)參
          • class:任何引用類(lèi)型,包含類(lèi),數(shù)組,委托,接口都可以用作類(lèi)型實(shí)參
          • struct:任何值類(lèi)型都可以做類(lèi)型實(shí)參
          • 接口名:只有這個(gè)接口或?qū)崿F(xiàn)接口的類(lèi)型才能用作類(lèi)型實(shí)參
          • new(): 任何帶有無(wú)參公共構(gòu)造函數(shù)的類(lèi)型都可以用作類(lèi)型實(shí)參

          在實(shí)現(xiàn)過(guò)程中,最多只能有一個(gè)主約束且必須放在第一位;可以有多個(gè)接口名約束;如果存在構(gòu)造函數(shù)約束,則必須放在最后。

          泛型約束的具體用法

          泛型其實(shí)定義聲明好后和類(lèi)型一樣。

          有泛型方法、泛型委托和泛型接口。具體用法如下所示:

          泛型方法

          ????????class?Ahui2?
          ????????{
          ????????????public?void?GetReverseAndPrintByAge(T[]?age)??
          ????????????{
          ????????????????Array.Reverse(age);
          ????????????????foreach?(var?item?in?age)
          ????????????????{
          ????????????????????Console.WriteLine("{0}"+item.ToString());
          ????????????????}
          ????????????????Console.WriteLine("");
          ????????????}
          ????????}

          泛型委托

          ????????delegate?void?MyNameDelegate(T?value);

          ????????class?Ahui3?
          ????????{
          ????????????static?public?void?PrintString(String?tempName)?
          ????????????{
          ????????????????Console.WriteLine(tempName);
          ????????????}

          ????????????static?public?void?PrintUpperString(String?tempName)
          ????????????{
          ????????????????Console.WriteLine(tempName.ToUpper());?
          ????????????}
          ????????}???????????????
          ????????static?void?Main(string[]?args)
          ????????{
          ????????????var?myDel?=?new?MyNameDelegate(Ahui3.PrintString);
          ????????????myDel?+=?Ahui3.PrintUpperString;

          ????????????myDel("Andyahui");

          ????????????Console.ReadKey();
          ????????}

          泛型接口

          ????????interface?IBaseAction?
          ????????{
          ????????????T?isLove(T?name);
          ????????}

          ????????class?Ahui?:?IBaseAction?
          ????????{
          ????????????public?S?isLove(S?name)
          ????????????{
          ????????????????return?name;
          ????????????}
          ????????}
          ????????????var?ahui=new?Ahui();
          ????????????var?ahui2?=?new?Ahui();
          ????????????Console.WriteLine(""+ahui.isLove("阿輝"));
          ????????????Console.WriteLine(""?+?ahui2.isLove(27));

          泛型接口讓我們編寫(xiě)參數(shù)和接口成員返回類(lèi)型是泛型類(lèi)型實(shí)參的接口。泛型接口的聲明和非泛型接口的聲明差不多,但是需要在接口名稱(chēng)之后的尖括號(hào)中放置類(lèi)型參數(shù)。

          需要注意兩點(diǎn):

          • 實(shí)現(xiàn)不同類(lèi)型參數(shù)的泛型接口是不同的接口
          • 可在非泛型類(lèi)型中實(shí)現(xiàn)泛型接口

          其中實(shí)現(xiàn)泛型類(lèi)型接口時(shí),必須保證類(lèi)型實(shí)參組合不會(huì)在類(lèi)型中產(chǎn)生兩個(gè)重復(fù)的接口。

          明天咱們將一起學(xué)習(xí)在泛型類(lèi)型創(chuàng)建過(guò)程中的一個(gè)主題,叫做可變性。分為協(xié)變、逆變、不變。

          寄語(yǔ)

          人生短暫,我不想去追求自己看不見(jiàn)的,我只想抓住我能看得見(jiàn)的。

          原創(chuàng)不易,給個(gè)關(guān)注。

          瀏覽 56
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    淫色娱乐,成人综合大全 | 深夜福利视频久久久久 | 中文字幕亚洲第一页在线 | 久久午夜影院 | 伊人婷婷网 |