C# 关于泛型及其接口,您最好的资源是什么?

C# 关于泛型及其接口,您最好的资源是什么?,c#,generics,collections,C#,Generics,Collections,我已经找到了许多关于IEnumerator、IEnumerable、ICollection、IList及其通用副本的文档和建议。遗憾的是,我还没有找到一本教程或书来解释接口的整个层次结构、这些接口的一般实现以及每种类型的最佳使用 关于泛型、泛型接口以及C#中泛型的推荐用法示例,您的最佳知识来源是什么?我理解泛型的主要方式就是查看泛型接口 继承是这样的: IList:ICollection:IEnumerable 当您查找IEnumerable的接口时,请注意它只有能够循环遍历一组项所必需的最小值

我已经找到了许多关于
IEnumerator
IEnumerable
ICollection
IList
及其通用副本的文档和建议。遗憾的是,我还没有找到一本教程或书来解释接口的整个层次结构、这些接口的一般实现以及每种类型的最佳使用


关于泛型、泛型接口以及C#中泛型的推荐用法示例,您的最佳知识来源是什么?

我理解泛型的主要方式就是查看泛型接口

继承是这样的:

IList:ICollection:IEnumerable

当您查找IEnumerable的接口时,请注意它只有能够循环遍历一组项所必需的最小值。它没有计数或其他任何东西。IEnumerable工作得很好,即使您看到的只是一条通过导线的流

ICollection增加计数。如果您正在实现某种集合,并且很容易知道集合的大小,那么您应该实现它。在这种情况下,通用接口有点不同。ICollection还有通过添加和删除成员来修改集合的方法。一个无序的集合将是一个很好的ICollection候选者


IList增加了通过索引获取和设置集合成员的功能。当项目顺序重要时使用此选项。当你有索引时,你可以做一些事情,比如交换第4项和第5项来改变它们的顺序。

我理解它们的主要方法就是查看它们的接口

继承是这样的:

IList:ICollection:IEnumerable

当您查找IEnumerable的接口时,请注意它只有能够循环遍历一组项所必需的最小值。它没有计数或其他任何东西。IEnumerable工作得很好,即使您看到的只是一条通过导线的流

ICollection增加计数。如果您正在实现某种集合,并且很容易知道集合的大小,那么您应该实现它。在这种情况下,通用接口有点不同。ICollection还有通过添加和删除成员来修改集合的方法。一个无序的集合将是一个很好的ICollection候选者

IList增加了通过索引获取和设置集合成员的功能。当项目顺序重要时使用此选项。当你有索引时,你可以做一些事情,比如交换第4项和第5项来改变它们的顺序。

你刚刚错过了一项:)

IDictionary:IList:ICollection:IEnumerable

您刚刚错过了一个:)


IDictionary:IList:ICollection:IEnumerable

IDictionary它与其他接口略有不同-它似乎只是键/值对的集合(与ICollection的功能相同),除非我错了。IDictionary它与其他接口有些不同-它似乎只是一个键/值对的集合(与ICollection功能相同),除非我错了。你应该重新标记这是集合。泛型并不总是用于集合。您应该将其重新标记为集合。泛型并不总是用于集合。