ByteArrayEqualityComparer.cs 620 B

12345678910111213141516171819202122232425
  1. #nullable enable
  2. using System;
  3. using System.Collections.Generic;
  4. public sealed class ByteArrayEqualityComparer : IEqualityComparer<byte[]>
  5. {
  6. public static ByteArrayEqualityComparer Instance { get; } = new();
  7. public bool Equals(byte[]? x, byte[]? y) {
  8. if (ReferenceEquals(x, y))
  9. return true;
  10. if (x is null || y is null)
  11. return false;
  12. return x.AsSpan().SequenceEqual(y.AsSpan());
  13. }
  14. public int GetHashCode(byte[]? obj)
  15. {
  16. var hashCode = new HashCode();
  17. hashCode.AddBytes(obj.AsSpan());
  18. return hashCode.ToHashCode();
  19. }
  20. }