diff --git a/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet`1+Builder.cs b/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet`1+Builder.cs index 4add6ac30db8..7a81b8950a98 100644 --- a/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet`1+Builder.cs +++ b/src/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableSortedSet`1+Builder.cs @@ -97,6 +97,20 @@ bool ICollection.IsReadOnly #endregion + /// + /// Gets the element of the set at the given index. + /// + /// The 0-based index of the element in the set to return. + /// The element at the given position. + /// + /// No index setter is offered because the element being replaced may not sort + /// to the same position in the sorted collection as the replacing element. + /// + public T this[int index] + { + get { return this.root[index]; } + } + /// /// Gets the maximum value in the collection, as defined by the comparer. /// diff --git a/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs b/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs index 22043a0c20ee..2408affc3055 100644 --- a/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs +++ b/src/System.Collections.Immutable/tests/ImmutableSortedSetBuilderTest.cs @@ -313,5 +313,17 @@ public void ICollectionMethods() Assert.NotNull(builder.SyncRoot); Assert.Same(builder.SyncRoot, builder.SyncRoot); } + + [Fact] + public void Indexer() + { + var builder = ImmutableSortedSet.Create(1, 3, 2).ToBuilder(); + Assert.Equal(1, builder[0]); + Assert.Equal(2, builder[1]); + Assert.Equal(3, builder[2]); + + Assert.Throws(() => builder[-1]); + Assert.Throws(() => builder[3]); + } } }