Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>disable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
<PackageReference Include="BenchmarkDotNet" Version="0.15.8" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
15 changes: 12 additions & 3 deletions collections-arrays/CompareArrays/CompareArrays/Article.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
namespace CompareArrays
{
public class Article : IEqualityComparer<Article>
public class Article
{
public string? Title { get; set; }
public DateTime LastUpdate { get; set; }
}

public class ArticleComparer : IEqualityComparer<Article>
{
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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
8 changes: 4 additions & 4 deletions collections-arrays/CompareArrays/CompareArrays/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
16 changes: 8 additions & 8 deletions collections-arrays/CompareArrays/Tests/Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
10 changes: 5 additions & 5 deletions collections-arrays/CompareArrays/Tests/Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
<PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
<PackageReference Include="coverlet.collector" Version="3.1.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.10.4" />
<PackageReference Include="MSTest.TestFramework" Version="3.10.4" />
<PackageReference Include="coverlet.collector" Version="10.0.1" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading