canto/Assets/Scripts/System/FComparer.cs
2025-08-14 19:11:32 -04:00

49 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
namespace KitsuneCafe.Sys
{
public class FComparer<T> : IComparer<T>
{
private readonly Func<T, T, int> comparer;
public FComparer(Func<T, T, int> comparer)
{
this.comparer = comparer;
}
public static IComparer<T> Create(Func<T, T, int> comparer)
{
return new FComparer<T>(comparer);
}
public int Compare(T x, T y)
{
return comparer(x, y);
}
}
public class FEqualityComparer<T> : IEqualityComparer<T>
{
private readonly Func<T, T, bool> comparer;
public FEqualityComparer(Func<T, T, bool> comparer)
{
this.comparer = comparer;
}
public static IEqualityComparer<T> Create(Func<T, T, bool> comparer)
{
return new FEqualityComparer<T>(comparer);
}
public bool Equals(T a, T b)
{
return comparer(a, b);
}
public int GetHashCode(T obj)
{
return obj.GetHashCode();
}
}
}