91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 協變與抗變詳解

發布時間:2020-08-06 06:47:13 來源:網絡 閱讀:1652 作者:1473348968 欄目:編程語言

-------------------------------------------------Animal.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    public class Animal
    {
    }
}

-------------------------------------------------Dog.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    public class Dog:Animal
    {
    }
}

-------------------------------------------------IOut.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    public interface IOut<out T>//協變
    {
        T Xb();//T 只能作為返回值
    }
}

-------------------------------------------------IIn.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    public interface IIn<in T>//抗變
    {
        void Kb(T t);//T 只能作為參數
    }
}

-------------------------------------------------ListOutIn.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    public class ListOutIn<T> : IOut<T>, IIn<T>
    {
        public T Xb()
        {
            throw new NotImplementedException();
        }
        public void Kb(T t)
        {
            throw new NotImplementedException();
        }
    }
}

-------------------------------------------------主程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //out --> 協變--> 輸出--> 隱式轉換
            //in  --> 抗變--> 輸入--> 顯示轉換

            //協變
            IOut<Animal> oa = new ListOutIn<Animal>();
            IOut<Dog> od = new ListOutIn<Dog>();
            oa = od;//因為接口是協變的,隱式轉換成功
            //抗變
            IIn<Animal> ia = new ListOutIn<Animal>();
            IIn<Dog> id = new ListOutIn<Dog>();
            id = ia;//因為接口是抗變的,顯示轉換成功
        }
    }
}

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

韩城市| 天柱县| 突泉县| 都江堰市| 乐昌市| 大新县| 和林格尔县| 台北市| 固始县| 原平市| 麻栗坡县| 建瓯市| 卢龙县| 黄冈市| 山西省| 海宁市| 龙山县| 米易县| 定结县| 甘孜| 乌拉特前旗| 井冈山市| 尼木县| 义马市| 铜鼓县| 辰溪县| 武乡县| 加查县| 建德市| 盐山县| 石泉县| 宁陵县| 磐石市| 平昌县| 阜南县| 高碑店市| 赤壁市| 体育| 苏尼特左旗| 楚雄市| 阳曲县|