diff --git a/collections-arrays/CompareArrays/BenchmarkRunner/ArrayComparerBenchmark.cs b/collections-arrays/CompareArrays/BenchmarkRunner/ArrayComparerBenchmark.cs index 3aa9e0e25a..7882ea548a 100644 --- a/collections-arrays/CompareArrays/BenchmarkRunner/ArrayComparerBenchmark.cs +++ b/collections-arrays/CompareArrays/BenchmarkRunner/ArrayComparerBenchmark.cs @@ -54,15 +54,15 @@ public void AsSpanSequenceEqual() } [Benchmark] - public void EnumerableEquals() + public void ObjectEquals() { - _arrayComparer.EnumerableEquals(_firstArray, _secondArray); + _arrayComparer.ObjectEquals(_firstArray, _secondArray); } [Benchmark] - public void EnumerableReferenceEquals() + public void ObjectReferenceEquals() { - _arrayComparer.EnumerableReferenceEquals(_firstArray, _secondArray); + _arrayComparer.ObjectReferenceEquals(_firstArray, _secondArray); } [Benchmark] diff --git a/collections-arrays/CompareArrays/BenchmarkRunner/BenchmarkRunner.csproj b/collections-arrays/CompareArrays/BenchmarkRunner/BenchmarkRunner.csproj index 3d90926513..405b9da96e 100644 --- a/collections-arrays/CompareArrays/BenchmarkRunner/BenchmarkRunner.csproj +++ b/collections-arrays/CompareArrays/BenchmarkRunner/BenchmarkRunner.csproj @@ -2,13 +2,13 @@ Exe - net6.0 + net10.0 enable disable - + diff --git a/collections-arrays/CompareArrays/CompareArrays/ArrayComparer.cs b/collections-arrays/CompareArrays/CompareArrays/ArrayComparer.cs index 2550369e0e..c71f6a05a4 100644 --- a/collections-arrays/CompareArrays/CompareArrays/ArrayComparer.cs +++ b/collections-arrays/CompareArrays/CompareArrays/ArrayComparer.cs @@ -35,15 +35,15 @@ public bool AsSpanSequenceEqual(int[] firstArray, int[] secondArray) public bool EnumerableSequenceEqual(Article[] articleArray, Article[] articleArrayCopy) { - return Enumerable.SequenceEqual(articleArray, articleArrayCopy, new Article()); + return Enumerable.SequenceEqual(articleArray, articleArrayCopy, new ArticleComparer()); } - public bool EnumerableEquals(int[] firstArray, int[] secondArray) + public bool ObjectEquals(int[] firstArray, int[] secondArray) { return Equals(firstArray, secondArray); } - public bool EnumerableReferenceEquals(int[] firstArray, int[] secondArray) + public bool ObjectReferenceEquals(int[] firstArray, int[] secondArray) { return ReferenceEquals(firstArray, secondArray); } diff --git a/collections-arrays/CompareArrays/CompareArrays/Article.cs b/collections-arrays/CompareArrays/CompareArrays/Article.cs index af2b1aabde..ff135e81a3 100644 --- a/collections-arrays/CompareArrays/CompareArrays/Article.cs +++ b/collections-arrays/CompareArrays/CompareArrays/Article.cs @@ -1,18 +1,27 @@ namespace CompareArrays { - public class Article : IEqualityComparer
+ public class Article { public string? Title { get; set; } public DateTime LastUpdate { get; set; } + } + public class ArticleComparer : IEqualityComparer
+ { public bool Equals(Article? first, Article? second) { - return first?.Title == second?.Title && first?.LastUpdate == second?.LastUpdate; + if (ReferenceEquals(first, second)) + return true; + + if (first is null || second is null) + return false; + + return first.Title == second.Title && first.LastUpdate == second.LastUpdate; } public int GetHashCode(Article obj) { - return base.GetHashCode(); + return HashCode.Combine(obj.Title, obj.LastUpdate); } } } diff --git a/collections-arrays/CompareArrays/CompareArrays/CompareArrays.csproj b/collections-arrays/CompareArrays/CompareArrays/CompareArrays.csproj index 9ad2a07d38..ed9781c223 100644 --- a/collections-arrays/CompareArrays/CompareArrays/CompareArrays.csproj +++ b/collections-arrays/CompareArrays/CompareArrays/CompareArrays.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net10.0 enable enable diff --git a/collections-arrays/CompareArrays/CompareArrays/Program.cs b/collections-arrays/CompareArrays/CompareArrays/Program.cs index 19184015fb..0d70124563 100644 --- a/collections-arrays/CompareArrays/CompareArrays/Program.cs +++ b/collections-arrays/CompareArrays/CompareArrays/Program.cs @@ -48,13 +48,13 @@ public static void Main(string[] args) Console.WriteLine(); - Console.WriteLine("---------- Compare using Enumerable.Equals"); - Console.WriteLine($"Are equal: {_arrayComparer.EnumerableEquals(_firstArray, _secondArray)}"); + Console.WriteLine("---------- Compare using object.Equals"); + Console.WriteLine($"Are equal: {_arrayComparer.ObjectEquals(_firstArray, _secondArray)}"); Console.WriteLine(); - Console.WriteLine("---------- Compare using Enumerable.ReferenceEquals"); - Console.WriteLine($"Are equal: {_arrayComparer.EnumerableReferenceEquals(_firstArray, _secondArray)}"); + Console.WriteLine("---------- Compare using object.ReferenceEquals"); + Console.WriteLine($"Are equal: {_arrayComparer.ObjectReferenceEquals(_firstArray, _secondArray)}"); Console.WriteLine(); diff --git a/collections-arrays/CompareArrays/Tests/Tests.cs b/collections-arrays/CompareArrays/Tests/Tests.cs index ec2a0845ad..5760fe7adf 100644 --- a/collections-arrays/CompareArrays/Tests/Tests.cs +++ b/collections-arrays/CompareArrays/Tests/Tests.cs @@ -92,33 +92,33 @@ public void GivenTwoEqualDataArraysOfArticle_WhenCompareThemUsingEnumerableSeque } [TestMethod] - public void GivenTwoDifferentReferenceArrays_WhenCompareThemUsingEnumerableEquals_ThenReturnFalse() + public void GivenTwoDifferentReferenceArrays_WhenCompareThemUsingObjectEquals_ThenReturnFalse() { - var result = _arrayComparer.EnumerableEquals(_firstArray, _secondArray); + var result = _arrayComparer.ObjectEquals(_firstArray, _secondArray); Assert.IsFalse(result); } [TestMethod] - public void GivenTwoEqualReferenceArrays_WhenCompareThemUsingEnumerableEquals_ThenReturnTrue() + public void GivenTwoEqualReferenceArrays_WhenCompareThemUsingObjectEquals_ThenReturnTrue() { - var result = _arrayComparer.EnumerableEquals(_firstArray, _firstArray); + var result = _arrayComparer.ObjectEquals(_firstArray, _firstArray); Assert.IsTrue(result); } [TestMethod] - public void GivenTwoDifferentReferenceArrays_WhenCompareThemUsingEnumerableReferenceEquals_ThenReturnFalse() + public void GivenTwoDifferentReferenceArrays_WhenCompareThemUsingObjectReferenceEquals_ThenReturnFalse() { - var result = _arrayComparer.EnumerableReferenceEquals(_firstArray, _secondArray); + var result = _arrayComparer.ObjectReferenceEquals(_firstArray, _secondArray); Assert.IsFalse(result); } [TestMethod] - public void GivenTwoEqualReferenceArrays_WhenCompareThemUsingEnumerableReferenceEquals_ThenReturnTrue() + public void GivenTwoEqualReferenceArrays_WhenCompareThemUsingObjectReferenceEquals_ThenReturnTrue() { - var result = _arrayComparer.EnumerableReferenceEquals(_firstArray, _firstArray); + var result = _arrayComparer.ObjectReferenceEquals(_firstArray, _firstArray); Assert.IsTrue(result); } diff --git a/collections-arrays/CompareArrays/Tests/Tests.csproj b/collections-arrays/CompareArrays/Tests/Tests.csproj index 39b8482d08..7a61d82cea 100644 --- a/collections-arrays/CompareArrays/Tests/Tests.csproj +++ b/collections-arrays/CompareArrays/Tests/Tests.csproj @@ -1,17 +1,17 @@ - net6.0 + net10.0 enable false - - - - + + + +