在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在C#中,存在两个泛型修饰符:in和out,他们分别对应逆变委托和协变委托。 我们知道,在C#中要想将一个泛型对象转换为另一个泛型对象时,必须要将一个泛型对象拆箱,对元素进行显式或隐式转换后重新装箱。 例如: List<Object> lobject=new List<Object>(){"0","1","2"}; List<int> lint=new List<int>(); foreach(Object obj in lobject) { lint.Add((int)obj); } 在这个拆箱和装箱的过程中,要消耗掉相当于lobject对象两倍的内存和资源,如果lobject对象非常大,这将是非常巨大的资源消耗。泛型修饰符就是用来解决这个问题的。 逆变泛型: ListIn:IList<in T> ListIn<Object> lobject = new ListIn<Object>(){"0","1","2"}; ListIn<int> lint=new ListIn<int>; lint = lobject; --------------------- 协变泛型: ListOut:IList<out T> ListOut<int> lint=new ListOut<int>(){0,1,2}; ListOut<Object> lobject=new ListOut<Object>(); lobject=lint; 转自:https://blog.csdn.net/mykge/article/details/42918841 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论