6

に基づいてカスタムコレクションを作成しようとしていますStack<T>Stack<T>Visual Studioで[メタデータから]を見ると、がのメソッドをStack<T>実装ICollectionする必要があることを示していますが、代わりに、のメソッドを持っていると示されています。誰かがこれが事実である理由を説明できますか?ICollectionCopyTo(Array array, index)ICollection<T>CopyTo(T[] array, index)

Stack<T>かなり模倣したコレクションを作成しようとしています。スタックのように実装する場合、メソッドICollectionを使用する必要がありますが、私が本当に望んでいるのは、メソッドを使用することです。実装せずにこれを達成する方法はありますか?CopyTo(Array array, index)CopyTo(T[] array, index)Stack<T>ICollection<T>

4

2 に答える 2

3

他の人が書いているように、明示的なインターフェース実装を使用して、非ジェネリックインターフェースを満たすことができます。

void ICollection.CopyTo(Array array, int arrayIndex)
{
  var arrayOfT = array as T[];
  if (arrayOfT == null)
    throw new InvalidOperationException();
  CopyTo(arrayOfT, arrayIndex); // calls your good generic method
}
于 2012-05-14T20:19:04.073 に答える
0

CopyTo(Array array, index)メソッドは明示的に実装されていると思います。つまり、オブジェクトをICollectionとして表示する場合にのみ、そのメソッドが表示されます。

var collection = (ICollection)stack;
collection.CopyTo(array, 0);
于 2012-05-14T20:34:11.180 に答える