diff --git a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs index aef043fd8a090f..a9d74045f15466 100644 --- a/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs +++ b/src/libraries/System.Collections.Immutable/ref/System.Collections.Immutable.cs @@ -265,6 +265,7 @@ public static System.Collections.Immutable.ImmutableArray< > CastUp(System.Collections.Immutable.ImmutableArray items) where TDerived : class?, T { throw null; } public System.Collections.Immutable.ImmutableArray Clear() { throw null; } public bool Contains(T item) { throw null; } + public bool Contains(T item, System.Collections.Generic.IEqualityComparer? equalityComparer) { throw null; } public void CopyTo(int sourceIndex, T[] destination, int destinationIndex, int length) { } public void CopyTo(T[] destination) { } public void CopyTo(T[] destination, int destinationIndex) { } diff --git a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs index 780a43ca5be632..6c9fdb1341cbaa 100644 --- a/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs +++ b/src/libraries/System.Collections.Immutable/src/System/Collections/Immutable/ImmutableArray_1.cs @@ -280,6 +280,20 @@ public bool Contains(T item) return this.IndexOf(item) >= 0; } + /// + /// Determines whether the specified item exists in the array. + /// + /// The item to search for. + /// + /// The equality comparer to use in the search. + /// If null, is used. + /// + /// true if an equal value was found in the array; false otherwise. + public bool Contains(T item, IEqualityComparer? equalityComparer) + { + return this.IndexOf(item, equalityComparer) >= 0; + } + /// /// Returns a new array with the specified value inserted at the specified position. /// diff --git a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs index 84fdb53e783027..bc7f7df4761bb8 100644 --- a/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs +++ b/src/libraries/System.Collections.Immutable/tests/ImmutableArrayTest.cs @@ -810,6 +810,24 @@ public void ContainsInt32(IEnumerable source) Assert.False(((ICollection)array).Contains(notContained)); } + [Fact] + public void ContainsDivisibleEqualityComparer() + { + ImmutableArray array = ImmutableArray.Create(1, 4, 3); + var divisibleComparer = new DelegateEqualityComparer(equals: (x, y) => x % y == 0); + Assert.True(array.Contains(2, divisibleComparer)); + + array = ImmutableArray.Create(1, 5, 3); + Assert.False(array.Contains(2, divisibleComparer)); + } + + [Fact] + public void ContainsDefaultEqualityComparer() + { + ImmutableArray array = ImmutableArray.Create(1, 2, 3); + Assert.True(array.Contains(2, null)); + } + [Theory] [MemberData(nameof(ContainsNullData))] public void ContainsNull(IEnumerable source) where T : class