成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

ASP.NET泛型三之使用協變和逆變實現類型轉換

瀏覽:562日期:2022-06-08 14:29:32

".NET泛型"系列:

協變(Convariant)和逆變(Contravariant)的出現,使數組、委托、泛型類型的隱式轉換變得可能。 子類轉換成基類,稱之為協變;基類轉換成子類,稱之為逆變。.NET4.0以來,支持了泛型接口的協變和逆變。

泛型協變

如果子類泛型隱式轉換成基類泛型,使用泛型協變。

有這樣的2個基類和派生類。

    public class Animal
    {
public virtual void Write()
{
    Console.WriteLine("我是基類");
}
    }

    public class Dog : Animal
    {
public override void Write()
{
    Console.WriteLine("我是小小狗");
}
    }

為了讓派生類Dog隱式轉換成基類Animal,先定義支持協變的泛型接口。

    //支持協變的接口
    public interface IFactory<out T>
    {
T Create();
    }

再實現這個接口。

    public class Factory<T> : IFactory<T>
    {

public T Create()
{
    return (T)Activator.CreateInstance<T>();
}
    }

客戶端調用。

    class Program
    {
static void Main(string[] args)
{
    IFactory<Dog> dogFactory = new Factory<Dog>();
    IFactory<Animal> animalFactory = dogFactory; //協變
    Animal animal = animalFactory.Create();
    animal.Write();
    Console.ReadKey();
}
    }

運行輸出:我是小小狗

以上,我們可以看出:

  • 協變后,父類的方法完全由子類替代,父類原先的方法不復存在
  • 泛型接口中的out關鍵字必不可少

泛型逆變

關于通知的一個接口。

    public interface INotification
    {
string Message { get; }
    }

關于通知接口的抽象實現。

    public abstract class Notification : INotification
    {
public abstract string Message { get; }
    }

關于通知抽象類的具體實現。

    public class MailNotification : Notification
    {
public override string Message
{
    get { return "你有郵件了~~"; }
}
    }

接下來,需要把通知的信息發布出去,需要一個發布通知的接口INotifier,該接口依賴INotification,大致INotifier<INotification>,而最終顯示通知,我們希望INotifier<MailNotification>,INotifier<INotification>轉換成INotifier<MailNotification>,這是逆變,需要關鍵字in。

    public interface INotifier<in TNotification> where TNotification : INotification
    {
void Notify(TNotification notification);
    }

實現INotifier。

    public class Notifier<TNotification> : INotifier<TNotification> where TNotification : INotification
    {

public void Notify(TNotification notification)
{
    Console.WriteLine(notification.Message);
}
    }

客戶端調用。

    class Program
    {
static void Main(string[] args)
{
    INotifier<INotification> notifier = new Notifier<INotification>();
    INotifier<MailNotification> mailNotifier = notifier;//逆變
    mailNotifier.Notify(new MailNotification());
    Console.ReadKey();
}
    }

運行輸出:你有郵件了~~

以上,我們可以看出:

  • INotifier的方法Notify()的參數類型是INotification,逆變后把INotification類型參數隱式轉換成了實現類MailNotificaiton。
  • 泛型接口中的in關鍵字必不可少

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對的支持。如果你想了解更多相關內容請查看下面相關鏈接

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产亚洲欧洲997久久综合| 一本色道久久综合亚洲精品不| 风间由美性色一区二区三区| 欧美在线播放高清精品| 香蕉久久一区二区不卡无毒影院 | 亚洲激情亚洲| 国产三级三级三级精品8ⅰ区| av综合在线播放| 日韩欧美一级二级| 国产成人综合在线观看| 欧美日韩中文另类| 久久国产生活片100| 欧美影院午夜播放| 蜜桃精品视频在线观看| 色哟哟欧美精品| 日本免费在线视频不卡一不卡二| 国产亚洲在线| 亚洲影院在线观看| 国产欧美日韩亚洲一区二区三区| 亚洲人快播电影网| 激情综合电影网| 亚洲视频综合在线| 亚洲精品一品区二品区三品区| 自拍偷拍国产精品| 99精品热6080yy久久| √…a在线天堂一区| 在线播放不卡| 亚洲欧美另类综合偷拍| 午夜视频久久久| 国产精品久久久久精k8| 国产综合激情| 中文字幕永久在线不卡| 伊大人香蕉综合8在线视| 亚洲欧洲成人精品av97| 红桃视频国产精品| 亚洲免费观看视频| 国产精品美女久久久浪潮软件| 亚洲国产精品久久一线不卡| 亚洲一区二区伦理| 三级久久三级久久久| 91福利国产精品| 国产美女娇喘av呻吟久久| 日韩一区二区在线观看视频播放| av网站免费线看精品| 国产日韩欧美a| 一区二区动漫| 亚洲va中文字幕| 欧美三片在线视频观看| 国产+成+人+亚洲欧洲自线| 久久精品亚洲麻豆av一区二区| 伊人久久婷婷色综合98网| 一区二区日韩av| 欧美亚州韩日在线看免费版国语版| 国产乱人伦精品一区二区在线观看 | 日韩午夜激情| 午夜精品福利一区二区蜜股av| 欧美亚洲日本国产| 不卡在线视频中文字幕| 国产精品成人网| 一本色道a无线码一区v| 国产馆精品极品| 国产亚洲成aⅴ人片在线观看| 亚洲国产美女| 蜜桃一区二区三区四区| 91精品国产色综合久久ai换脸| 欧美在线播放| 一区二区三区欧美激情| 欧美系列亚洲系列| 99久久99久久精品免费观看| 中文字幕一区二区在线播放| 先锋影音一区二区三区| 精品一区二区影视| 久久精品一区二区三区四区| 亚洲一区黄色| 国产成人精品aa毛片| √…a在线天堂一区| 欧美在线视频日韩| 91麻豆123| 天堂久久一区二区三区| 日韩女优电影在线观看| 亚洲精品欧洲精品| 黑人巨大精品欧美黑白配亚洲| 国产清纯在线一区二区www| 久久国产99| 成人国产精品免费网站| 亚洲免费观看高清完整版在线 | 国产清纯白嫩初高生在线观看91 | 欧美大片国产精品| 正在播放亚洲| 国产成人精品免费一区二区| 亚洲欧美综合色| 欧美日韩亚洲综合| 国语自产精品视频在线看8查询8| 日韩av一级片| 久久综合久久综合久久综合| 久久精品亚洲一区二区| jlzzjlzz欧美大全| 亚洲成av人片观看| 久久中文娱乐网| 91福利在线免费观看| 国产精品成人一区二区网站软件| 蜜臀国产一区二区三区在线播放| 欧美极品少妇xxxxⅹ高跟鞋| 欧美影院午夜播放| 亚洲午夜精品国产| 国产精品一二三区| 亚洲综合一二三区| 久久婷婷综合激情| 色狠狠色噜噜噜综合网| 欧美日韩国产一区精品一区| 精品在线亚洲视频| 亚洲免费观看高清完整版在线观看| 91精品国产福利在线观看| 国产欧美一区二区色老头| 成人av在线一区二区三区| 婷婷六月综合网| 国产精品久久久久久久岛一牛影视| 欧美精品亚洲一区二区在线播放| aa亚洲婷婷| 99久久婷婷国产精品综合| 日日欢夜夜爽一区| 最新高清无码专区| 欧美成人猛片aaaaaaa| 色老汉av一区二区三区| 亚洲高清在线观看一区| 成人福利视频网站| 美女爽到高潮91| 亚洲黄色性网站| 国产日韩欧美a| 欧美大度的电影原声| 日本韩国欧美在线| 国产日韩精品久久| 欧美日本国产| 成人h版在线观看| 国产综合成人久久大片91| 亚洲福利视频一区二区| 欧美国产激情二区三区| 日韩三级.com| 欧美日本一区二区三区四区| 国产视频精品网| 狠狠爱综合网| 91色.com| 国产真实精品久久二三区| 亚洲高清免费一级二级三级| 中文字幕欧美一区| 久久久一区二区| 欧美电影免费观看高清完整版在线观看| 在线中文字幕一区| 亚洲欧美久久久| 日韩午夜av| 精品动漫3d一区二区三区免费版| 99精品一区二区三区| 国产成人精品1024| 国产乱码字幕精品高清av | 99精品热视频| 国产成人综合亚洲网站| 久久99久久久欧美国产| 丝袜a∨在线一区二区三区不卡| 亚洲精品欧美二区三区中文字幕| 国产精品乱码一区二三区小蝌蚪| 久久久综合激的五月天| 日韩欧美一区二区久久婷婷| 4438x成人网最大色成网站| 欧美亚洲动漫制服丝袜| 色噜噜夜夜夜综合网| 色一情一伦一子一伦一区| 免播放器亚洲| 美日韩在线观看| 国产精品久久久亚洲一区| 日韩午夜在线| 亚洲国产欧美日韩| 亚洲国产99| 亚洲国产1区| 亚洲另类视频| 中国女人久久久| 亚洲欧美春色| 亚洲欧美日韩国产| 一本色道久久综合狠狠躁的推荐| 久久久久看片| 色婷婷激情综合| 欧美午夜精品理论片a级按摩| 欧美三级蜜桃2在线观看| 欧美日韩夫妻久久| 91精品国产麻豆国产自产在线| 日韩三级精品电影久久久| 日韩精品一区二区三区中文不卡| 日韩一区二区免费电影| 日韩欧美一二三区| 久久网这里都是精品| 久久奇米777| 中文在线资源观看网站视频免费不卡 | 久久九九影视网| 欧美激情一区二区三区在线| 欧美高清在线视频| 中文字幕一区二区三区在线播放| 国产精品高潮呻吟久久| 亚洲日本在线天堂| 亚洲国产成人av好男人在线观看| 日本在线不卡一区| 狠狠久久亚洲欧美|