.NET - 数据集是IEnumerable的衍生物?

时间:2011-02-04 06:32:28

标签: .net asp.net .net-4.0 dataset ienumerable

我一直在阅读LINQ和Dataset classh,我的书中指出.NET中的Dataset类实现或是IEnumerable的衍生物(我的书不清楚哪一个)。

  1. 在编程中,衍生意味着什么?

  2. 我查看了MSDN上的Dataset类,但没有表明它是IEnumerable的衍生物或实现的IEnumerable。数据集类和IEnumerable如何相关?

  3. 为了将来参考,我该如何找到?我错过了MSDN上的内容吗?我认为它会在某处记录下来......

  4. 谢谢

2 个答案:

答案 0 :(得分:3)

“衍生”可能意味着“继承自”或“子类”,但这两种术语都是错误的; IEnumerable[<T>]是一个接口,因此类型可能实现此接口。

同样,这本书是错误的 - 它没有:

public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable,
     ISupportInitializeNotification, ISupportInitialize, ISerializable

然而,.Tables是可枚举的; DataTableCollectionit's base-class获取该内容:

public class InternalDataCollectionBase : ICollection, IEnumerable

MSDN确实是你的朋友,或者只是在视觉工作室中“显示定义”。

答案 1 :(得分:3)

它没有实现IEnumerable,但确实实现了IListSourceIListSource有一个方法GetList(),它返回一个IList来实现IEnumerable

它实现IEnumerable(或者,你可以得到一个IEnumerable这意味着什么意味着你可以使用以下结构:

foreach (var item in dataSet.GetList())
{
    // Do something with item
}

这是一种简单的方法来遍历集合中的所有项目(“枚举”项目)。

你如何知道你是否可以这样做?大多数时候,这是显而易见的。包含一组项目的所有内容都应该实现IEnumerable。随着时间的推移,你会感受到这一点。