.NET Core CSharp 中级篇 2-2 List,ArrayList和Dictionary (2)

我们可以很清楚的发现泛型参数中有out关键字修饰,也就是说,我们的IEnumerable是支持协变的。我们可以很轻松的将IEnumerable类型的数据转换成其他数据,例如:

IEnumerable<string> strs = new IEnumerable<string>(); IEnumerable<object> obj = strs;

因此我通常在使用的时候,我会推荐使用IEnumerable来代替List的一些数据操作。

IList接口

老规矩,先看看元数据

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable { //省略 }

这里就可以发现IList并不支持协变,属于不变式,那么下列用法是不合法的:

IList<string> strs = new IList<string>(); IList<object> obj = strs;

如果我的文章帮助了您,请您在github .NET Core Guide项目帮我点一个star,在博客园中点一个关注和推荐。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfzwx.html