您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
47 行
1.1 KiB
47 行
1.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace UnityEditor.Graphs.Material
|
|
{
|
|
internal static class Extensions
|
|
{
|
|
public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first,
|
|
IEnumerable<TSource> second , Func<TSource, TSource, bool> comparer )
|
|
{
|
|
return first.Except(second, new LambdaComparer<TSource>(comparer));
|
|
}
|
|
|
|
public class LambdaComparer<T> : IEqualityComparer<T>
|
|
{
|
|
private readonly Func<T, T, bool> _lambdaComparer;
|
|
private readonly Func<T, int> _lambdaHash;
|
|
|
|
public LambdaComparer(Func<T, T, bool> lambdaComparer) :
|
|
this(lambdaComparer, o => 0)
|
|
{
|
|
}
|
|
|
|
public LambdaComparer(Func<T, T, bool> lambdaComparer, Func<T, int> lambdaHash)
|
|
{
|
|
if (lambdaComparer == null)
|
|
throw new ArgumentNullException("lambdaComparer");
|
|
if (lambdaHash == null)
|
|
throw new ArgumentNullException("lambdaHash");
|
|
|
|
_lambdaComparer = lambdaComparer;
|
|
_lambdaHash = lambdaHash;
|
|
}
|
|
|
|
public bool Equals(T x, T y)
|
|
{
|
|
return _lambdaComparer(x, y);
|
|
}
|
|
|
|
public int GetHashCode(T obj)
|
|
{
|
|
return _lambdaHash(obj);
|
|
}
|
|
}
|
|
}
|
|
}
|