我一直在阅读LINQ和Dataset classh,我的书中指出.NET中的Dataset类实现或是IEnumerable的衍生物(我的书不清楚哪一个)。
在编程中,衍生意味着什么?
我查看了MSDN上的Dataset类,但没有表明它是IEnumerable的衍生物或实现的IEnumerable。数据集类和IEnumerable如何相关?
为了将来参考,我该如何找到?我错过了MSDN上的内容吗?我认为它会在某处记录下来......
谢谢
答案 0 :(得分:3)
“衍生”可能意味着“继承自”或“子类”,但这两种术语都是错误的; IEnumerable[<T>]
是一个接口,因此类型可能实现此接口。
同样,这本书是错误的 - 它没有:
public class DataSet : MarshalByValueComponent, IListSource, IXmlSerializable,
ISupportInitializeNotification, ISupportInitialize, ISerializable
然而,.Tables
是可枚举的; DataTableCollection
从it's base-class获取该内容:
public class InternalDataCollectionBase : ICollection, IEnumerable
MSDN确实是你的朋友,或者只是在视觉工作室中“显示定义”。
答案 1 :(得分:3)
它没有实现IEnumerable
,但确实实现了IListSource
。 IListSource
有一个方法GetList()
,它返回一个IList
来实现IEnumerable
。
它实现IEnumerable
(或者,你可以得到一个IEnumerable
这意味着什么意味着你可以使用以下结构:
foreach (var item in dataSet.GetList())
{
// Do something with item
}
这是一种简单的方法来遍历集合中的所有项目(“枚举”项目)。
你如何知道你是否可以这样做?大多数时候,这是显而易见的。包含一组项目的所有内容都应该实现IEnumerable
。随着时间的推移,你会感受到这一点。