共用方式為


EnumerableComCollection<TComEnumerator,TEnumerated> 類別

定義

提供 COM 樣式 IEnumXXX 介面周圍 IEnumerable 包裝函式之型別的泛型基類。

generic <typename TComEnumerator, typename TEnumerated>
public ref class EnumerableComCollection abstract : Microsoft::VisualStudio::Shell::IComEnumeratorRelay<TComEnumerator, TEnumerated>, System::Collections::Generic::IEnumerable<TEnumerated>
public abstract class EnumerableComCollection<TComEnumerator,TEnumerated> : Microsoft.VisualStudio.Shell.IComEnumeratorRelay<TComEnumerator,TEnumerated>, System.Collections.Generic.IEnumerable<TEnumerated>
type EnumerableComCollection<'ComEnumerator, 'Enumerated> = class
    interface seq<'Enumerated>
    interface IEnumerable
    interface IComEnumeratorRelay<'ComEnumerator, 'Enumerated>
Public MustInherit Class EnumerableComCollection(Of TComEnumerator, TEnumerated)
Implements IComEnumeratorRelay(Of TComEnumerator, TEnumerated), IEnumerable(Of TEnumerated)

類型參數

TComEnumerator

COM 列舉值類型 (例如 IEnumString)

TEnumerated

(列舉 TComEnumerator 的類型,例如字串)

繼承
EnumerableComCollection<TComEnumerator,TEnumerated>
衍生
實作

備註

衍生自這個類別的類別會將 COM 樣式的 IEnumXXX 介面調整為可由 foreach 語句處理的表單。 在理想情況下,這個泛型類別本身就已足夠,不需要衍生類別執行作業,但必須定義 C# 泛型的嚴格性會防止這種情況。

這個類別必須在 COM 列舉值上呼叫其包裝 (Next、Skip 等 ) 的方法,但泛型型別只能存取參數化型別所指定參數化型別的屬性和方法。 具體而言,如果我們在 TComEnumerator 上指定條件約束,告知編譯程式 TComEnumerator 實作 Next,我們只能呼叫 TComEnumerator.Next。

COM IEnumXXX 介面是強型別的 (,也就是 IEnumXXX.Next 會傳回 XXX 對象的陣列) ,而且沒有通用基類,因此我們無法直接在 TComEnumerator 上放置條件約束。 這是 IComEnumeratorRelay 的所在位置:EnumerableComCollection 要求其衍生類別實作強型別 IComEnumeratorRelay 介面,這可讓泛型型別呼叫 COM 列舉值,而不需要在 TComEnumerator 上放置條件約束。

建構函式

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator)

初始化所提供列舉值的新 實例 EnumerableComCollection<TComEnumerator,TEnumerated>

EnumerableComCollection<TComEnumerator,TEnumerated>(TComEnumerator, Int32)

針對提供的列舉值和快取大小,初始化 的新實例 EnumerableComCollection<TComEnumerator,TEnumerated>

欄位

DefaultCacheSize

默認快取大小。

方法

Clone(TComEnumerator, TComEnumerator)

使用指定的列舉值複製專案。

GetEnumerator()

取得列舉值。

NextItems(TComEnumerator, UInt32, TEnumerated[], UInt32)

取得指定的項目數。

Reset(TComEnumerator)

重設集合的計數器。

Skip(TComEnumerator, UInt32)

略過指定的項目數目。

明確介面實作

IEnumerable.GetEnumerator()

取得列舉值。

擴充方法

EmptyIfNull<T>(IEnumerable<T>)

如果不是 Null,則傳回這個列舉。 如果是 null,則傳回空列舉。

適用於