我試圖創建一個實現IList的簡單類。但是,除非我第一次將DiskBackedCollection投射到IList,否則這些成員不可用。我如何在不投射的情況下使其可用?執行IList時成員不可用
public partial class DiskBackedCollection<T> : IList<T>
{
private List<T> _underlyingList = new List<T>();
int IList<T>.IndexOf(T item)
{
return _underlyingList.IndexOf(item);
}
T IList<T>.this[int index]
{
get
{
return _underlyingList[index];
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
int ICollection<T>.Count
{
get
{
return _underlyingList.Count;
}
}
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return new DiskBackedCollectionEnumerator(this);
}
IEnumerator IEnumerable.GetEnumerator()
{
return new DiskBackedCollectionEnumerator(this);
}
}
[C#接口。隱式實現與顯式實現](http://stackoverflow.com/questions/143405/c-sharp-interfaces-implicit-implementation-versus-explicit-implementation)。 – poke
我設法進入我的腦海,這只是一個代碼清晰的事情! - 感謝您的鏈接。 – Lee
與您的問題無關,但它通常會簡化您的代碼以使用基類「Collection」,它具有虛擬方法「InsertItem」,「RemoveItem」等,您可以覆蓋任何自定義功能。 –
Joe