C#协变与抗变详解-创新互联

-------------------------------------------------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//协变
    {
        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//抗变
    {
        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 : IOut, IIn
    {
        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 oa = new ListOutIn();
            IOut od = new ListOutIn();
            oa = od;//因为接口是协变的,隐式转换成功
            //抗变
            IIn ia = new ListOutIn();
            IIn id = new ListOutIn();
            id = ia;//因为接口是抗变的,显示转换成功
        }
    }
}

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


新闻标题:C#协变与抗变详解-创新互联
网站URL:http://bzwzjz.com/article/ceejgg.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都模版网站建设 企业网站建设 重庆电商网站建设 成都响应式网站建设公司 成都网站建设公司 成都营销网站制作 成都网站设计 成都网站建设 高端网站设计推广 成都响应式网站建设 成都网站制作 成都网站建设 网站设计制作 网站建设推广 重庆企业网站建设 成都网站设计 成都网站建设 梓潼网站设计 成都网站制作公司 四川成都网站制作 外贸网站设计方案 成都网站建设