2011-02-04 68 views
2

我一直在閱讀LINQ和Dataset classh,我的書指出.NET中的Dataset類實現或是IEnumerable的衍生物(我的書不清楚哪一個)。.NET - 數據集是IEnumerable的衍生物?

  1. 在編程的背景下,衍生物是什麼意思?

  2. 我查看了MSDN上的Dataset類,它沒有指出它是IEnumerable的衍生物或實現。數據集類和IEnumerable如何關聯?

  3. 爲了將來的參考,我該如何找出答案?我錯過了MSDN上的東西嗎?我認爲這將被記錄在案的地方...

謝謝

+2

出於好奇,哪本書是那個? – 2011-02-04 06:41:26

回答

3

它沒有實現IEnumerable,但它確實實現了IListSourceIListSource有一個方法GetList(),它返回一個IList,它實現IEnumerable

它意味着什麼,它實現IEnumerable(或者,你可以得到一個IEnumerable比如這裏的情況)是,你可以使用下面的結構:

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

這是走過去的所有項目的簡單方法(「列舉」項目)。

你如何知道你是否可以做到這一點?大多數時候,這很明顯。包含一組項目的所有內容都應該實現IEnumerable。隨着時間的推移,你會感覺到這一點。

3

「衍生物」 威力意味着「繼承自」或「子」,但無論哪種方式這一術語是錯誤的; IEnumerable[<T>]是一個接口,所以一個類型可能實現這個接口。

同樣,這本書是錯的 - 它並不:

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

.Tables是可枚舉的,但是, DataTableCollection獲取來自it's base-class

public class InternalDataCollectionBase : ICollection, IEnumerable 

MSDN確實是你的朋友,或在Visual Studio只是 「秀定義」。