はじめに
GetHashCodeを自前で実装するのにSystem.HashCode
はとても便利です。
learn.microsoft.com
public class Sample : IEquatable<Sample> { public int Id { get; } public int Value { get; } public bool Equals(Sample other) { if (other is null) return false; if (ReferenceEquals(this, other)) return true; return Id == other.Id && Value == other.Value; } public override bool Equals(object obj) => Equals(obj as Sample); public override int GetHashCode() => HashCode.Combine(Id, Value); }
ただし利用しているランタイムのバージョンによってはNuGetからパッケージを追加でパッケージをインストールする必要があるので、そのことについて書こうと思います。
対処法
.netstandard2.1・.NET Core3.0以降ならデフォルトで組み込まれているのですが、それ以前であればMicrosoft.Bcl.HashCode
をインストールする必要があります。
www.nuget.org
$ dotnet add package Microsoft.Bcl.HashCode --version 6.0.0
正直今だとほぼお目にかかることがないと思うのですが、SourceGeneratorを活用するプロジェクトだとnetstandard2.0
を用いるケースもあるためたまに必要になる知識だったりします。