// Assumes index >= 0, returns null if index >= Count public object GetDataItem(int index) { Debug.Assert(index >= 0); IList list = this.List; if (list != null) { return((index < list.Count) ? list[index] : null); } PagedCollectionView collectionView = this.DataSource as PagedCollectionView; if (collectionView != null) { return((index < collectionView.Count) ? collectionView.GetItemAt(index) : null); } IEnumerable enumerable = this.DataSource; if (enumerable != null) { IEnumerator enumerator = enumerable.GetEnumerator(); int i = -1; while (enumerator.MoveNext() && i < index) { i++; if (i == index) { return(enumerator.Current); } } } return(null); }
// Assumes index >= 0, returns null if index >= Count public object GetDataItem(int index) { Debug.Assert(index >= 0, "Expected positive index."); IList list = this.List; if (list != null) { return((index < list.Count) ? list[index] : null); } #if FEATURE_PAGEDCOLLECTIONVIEW PagedCollectionView collectionView = this.DataSource as PagedCollectionView; if (collectionView != null) { return((index < collectionView.Count) ? collectionView.GetItemAt(index) : null); } #endif IEnumerable enumerable = this.DataSource; if (enumerable != null) { IEnumerator enumerator = enumerable.GetEnumerator(); int i = -1; while (enumerator.MoveNext() && i < index) { i++; if (i == index) { return(enumerator.Current); } } } return(null); }