亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#協變和逆變實例分析

2020-01-24 02:20:09
字體:
來源:轉載
供稿:網友

本文實例講述了c#協變和逆變的原理及應用。分享給大家供大家參考。具體如下:

由子類向父類方向轉變是協變,用out關鍵字標識,由父類向子類方向轉變是逆變,用in關鍵字

協變和逆變的應用
 
一、 數組的協變
 

復制代碼 代碼如下:
Animal[] animalArray = new Dog[]{};

說明:聲明的數組數據類型是Animal,而實際上賦值時給的是Dog數組;每一個Dog對象都可以安全的轉變為Animal。Dog向Animal方法轉變是沿著繼承鏈向上轉變的所以是協變
 
二. 委托中的協變和逆變

1、委托中的協變

復制代碼 代碼如下:
//委托定義的返回值是Animal類型是父類
public delegate Animal GetAnimal();
//委托方法實現中的返回值是Dog,是子類
static Dog GetDog(){return new Dog();}
//GetDog的返回值是Dog, Dog是Animal的子類;返回一個Dog肯定就相當于返回了一個Animal;所以下面對委托的賦值是有效的
GetAnimal getMethod = GetDog;

 
2、委托中的逆變

復制代碼 代碼如下:
//委托中的定義參數類型是Dog
public delegate void FeedDog(Dog target);
//實際方法中的參數類型是Animal
static void FeedAnimal(Animal target){}
// FeedAnimal是FeedDog委托的有效方法,因為委托接受的參數類型是Dog;而FeedAnimal接受的參數是animal,Dog是可以隱式轉變成Animal的,所以委托可以安全的的做類型轉換,正確的執行委托方法;
FeedDog feedDogMethod = FeedAnimal;
//定義委托時的參數是子類,實際上委托方法的參數是更寬泛的父類Animal,是父類向子類方向轉變,是逆變

 
三. 泛型委托的協變和逆變
 
1、 泛型委托中的逆變

復制代碼 代碼如下:
//委托聲明:
public delegate void Feed<in T>(T target);
//Feed委托接受一個泛型類型T,注意在泛型的尖括號中有一個in關鍵字,這個關鍵字的作用是告訴編譯器在對委托賦值時類型T可能要做逆變

//先聲明一個T為Animal的委托
Feed<Animal> feedAnimalMethod = a=>Console.WriteLine(“Feed animal lambda”);
//將T為Animal的委托賦值給T為Dog的委托變量,這是合法的,因為在定義泛型委托時有in關鍵字,如果把in關鍵字去掉,編譯器會認為不合法
Feed<Dog> feedDogMethod = feedAnimalMethod;


 
2、泛型委托中的協變

復制代碼 代碼如下:
//委托聲明
public delegate T Find<out T>();
//Find委托要返回一個泛型類型T的實例,在泛型的尖括號中有一個out關鍵字,該關鍵字表明T類型是可能要做協變的
//聲明Find<Dog>委托
Find<Dog> findDog = ()=>new Dog();
//聲明Find<Animal>委托,并將findDog賦值給findAnimal是合法的,類型T從Dog向Animal轉變是協變
Find<Animal> findAnimal = findDog;

 
四. 泛型接口中的協變和逆變
 
1、泛型接口中的逆變

復制代碼 代碼如下:
//接口定義:
public interface IFeedable<in T>
{
void Feed(T t);
}

//接口的泛型T之前有一個in關鍵字,來表明這個泛型接口可能要做逆變
//如下泛型類型FeedImp<T>,實現上面的泛型接口;需要注意的是協變和逆變關鍵字in

public class FeedImp<T>:IFeedable<T>
{
    public void Feed(T t){
        Console.WriteLine(“Feed Animal”);
    }
}

//使用接口逆變:
IFeedable<Dog> feedDog = new FeedImp<Animal>();
//上面的代碼將FeedImp<Animal>類型賦值給了IFeedable<Dog>的變量;Animal向Dog轉變了,所以是逆變


 
2、泛型接口中的協變

復制代碼 代碼如下:
//接口的定義:
public interface IFinder<out T>
{
    T Find();
}

//泛型接口的泛型T之前用了out關鍵字來說明此接口是可能要做協變的;如下泛型接口實現類
public class Finder<T>:IFinder<T> where T:new()
{
    public T Find(){
        return new T();
    }

//使用協變,IFinder的泛型類型是Animal,但是由于有out關鍵字,我可以將Finder<Dog>賦值給它
IFinder<Animal> finder = new Finder<Dog>();

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品成a人在线观看| 亚洲精品欧美极品| 国产精品爱啪在线线免费观看| 97涩涩爰在线观看亚洲| 国产综合在线观看视频| 欧美日韩一区二区在线| 欧美日韩国产成人高清视频| 欧美另类精品xxxx孕妇| 久久免费精品日本久久中文字幕| 91av视频导航| 成人网在线视频| 国产视频精品va久久久久久| 国产精品三级美女白浆呻吟| 亚洲一区国产精品| 日韩欧美在线国产| 久久久久久有精品国产| 国产91成人video| 亚洲一区二区三区久久| 91po在线观看91精品国产性色| 欧美国产视频日韩| 91丝袜美腿美女视频网站| 538国产精品一区二区免费视频| 亚洲精品视频中文字幕| 奇门遁甲1982国语版免费观看高清| 国产精品中文字幕在线观看| 韩曰欧美视频免费观看| 精品日韩视频在线观看| 日本午夜精品理论片a级appf发布| 亚洲精品在线观看www| 中文字幕v亚洲ⅴv天堂| 国产精品流白浆视频| 久久久久久久香蕉网| 久久久久久久97| 国产成人aa精品一区在线播放| 国产午夜精品免费一区二区三区| 久久久久久国产精品三级玉女聊斋| 欧美一级视频免费在线观看| 亚洲视频在线观看视频| 国产日韩欧美成人| 久久久黄色av| 久久久国产精彩视频美女艺术照福利| 亚洲永久免费观看| 亚洲最大成人网色| 国产精品91久久久久久| 亚洲人a成www在线影院| 精品国产欧美一区二区三区成人| 欧美疯狂做受xxxx高潮| 日韩小视频在线观看| 全亚洲最色的网站在线观看| 亚洲黄页视频免费观看| 成人有码在线播放| 欧美日韩国产综合新一区| 亚洲男人天堂2023| 中文字幕一区二区三区电影| 欧美一区二三区| 成人网在线免费观看| 日本精品视频在线| 成人自拍性视频| 欧洲成人在线观看| 亚洲美女动态图120秒| 欧美激情亚洲一区| 久久久999成人| 欧美成人免费在线观看| 久久免费视频这里只有精品| 欧美夫妻性视频| 欧亚精品中文字幕| 久久资源免费视频| 欧美极品美女视频网站在线观看免费| 日韩视频亚洲视频| 欧美激情亚洲一区| 97国产精品视频人人做人人爱| 亚洲美女在线观看| 欧美放荡办公室videos4k| 精品亚洲男同gayvideo网站| 麻豆国产va免费精品高清在线| 欧美性猛交xxxx乱大交极品| 97香蕉久久夜色精品国产| 国产69精品久久久| 欧美成人精品一区二区三区| 91高清免费视频| 国产成人自拍视频在线观看| 国产小视频91| 91精品国产免费久久久久久| 欧美极品欧美精品欧美视频| 午夜精品久久久久久久久久久久| 欧美日韩人人澡狠狠躁视频| 国产精品美女主播在线观看纯欲| 热re91久久精品国99热蜜臀| 国产一级揄自揄精品视频| 国产网站欧美日韩免费精品在线观看| 色噜噜狠狠狠综合曰曰曰88av| 欧美激情在线有限公司| 欧美野外猛男的大粗鳮| 中文字幕日韩精品在线观看| 久久久久久有精品国产| 欧美日韩中文字幕在线| 亚洲欧美一区二区激情| 日韩三级成人av网| 日韩在线观看成人| 国产一区二区日韩| 精品女同一区二区三区在线播放| 欧美午夜久久久| 欧美性猛交xxxx免费看久久久| 91精品国产综合久久久久久久久| 久久亚洲春色中文字幕| 国产伦精品一区二区三区精品视频| 在线播放国产一区二区三区| 国产精品男人爽免费视频1| 亚洲欧美国产精品久久久久久久| 亚洲成人激情图| 欧美黄网免费在线观看| 全亚洲最色的网站在线观看| 国产精品免费一区二区三区都可以| 欧美裸体xxxx| 精品在线欧美视频| 日韩电影中文字幕一区| 色偷偷偷亚洲综合网另类| 夜夜嗨av色综合久久久综合网| 久久久久国产视频| 精品激情国产视频| 久久成人精品一区二区三区| 免费av一区二区| 欧美乱大交xxxxx另类电影| 日韩成人av在线播放| 精品国产电影一区| 一区二区三区黄色| 亚洲国产精品久久91精品| 亚洲影视九九影院在线观看| 亚洲国产成人av在线| 久久久久亚洲精品| 精品毛片三在线观看| 成人免费在线网址| 亚洲女人天堂网| 欧美在线视频播放| 中文国产成人精品久久一| 性亚洲最疯狂xxxx高清| 欧美在线激情网| 日韩精品在线观| 日本久久久久亚洲中字幕| 久久久久999| 一区二区三区在线播放欧美| 午夜免费在线观看精品视频| 色久欧美在线视频观看| 性色av一区二区三区免费| 在线成人一区二区| 国内精品久久久久影院 日本资源| 日本中文字幕不卡免费| 久久久999国产精品| 中文字幕日韩av| 91国在线精品国内播放| 日韩视频亚洲视频| 亚洲日本欧美中文幕| 综合网中文字幕| 中文字幕久热精品在线视频| 精品国产老师黑色丝袜高跟鞋| 最近2019年日本中文免费字幕| 欧美日韩精品中文字幕| 日韩av电影免费观看高清| 色偷偷888欧美精品久久久| 欧美亚洲激情视频| 日韩一区二区精品视频| 久久免费视频网| 久久男人的天堂| 国产精品女人网站|