网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

C#中的两个泛型修饰符

时间:2023-01-14 11:48

人气:

作者:admin

标签: 编程语言  C语言 

导读:在C#中,存在两个泛型修饰符:in和out,他们分别对应逆变委托和协变委托。 我们知道,在C#中要想将一个泛型对象转换为另一个泛型对象时,必须要将一个泛型对象拆箱,对元素进行显...

C#中,存在两个泛型修饰符:in和out,他们分别对应逆变委托和协变委托。

我们知道,在C#中要想将一个泛型对象转换为另一个泛型对象时,必须要将一个泛型对象拆箱,对元素进行显式或隐式转换后重新装箱。

例如:

Listlobject=new List(){"0","1","2"};
List lint=new List();
foreach(Object obj in lobject)
{
lint.Add((int)obj);
}
在这个拆箱和装箱的过程中,要消耗掉相当于lobject对象两倍的内存和资源,如果lobject对象非常大,这将是非常巨大的资源消耗。泛型修饰符就是用来解决这个问题的。
当两个泛型对象的元素存在继承关系是,可以在实现泛型对象是为泛型元素增加in或者out声明,以便逆变或协变。

逆变泛型:
ListIn:IList
ListInlobject = new ListIn(){"0","1","2"};
ListIn lint=new ListIn;
lint = lobject;
协变泛型:
ListOut:IList
ListOut lint=new ListOut(){0,1,2};
ListOutlobject=new ListOut();
lobject=lint;

原文链接:https://blog.csdn.net/mykge/article/details/42918841

编辑:何安

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信