Как я понимаю, 2 лямбда-выражения должны быть равны, если они объявляют один и тот же код в одном и том же порядке с одинаковыми параметрами.
Но простой тест на GetHashcode не выполняется:
$
private class LambdaTest
{
private bool x;
public Expression<Func<object, bool>> Predicate
{
get { return o => x; }
}
public LambdaTest(bool x)
{
this.x= x;
}
public override int GetHashCode()
{
return Predicate.GetHashCode();
}
}
$
Тест $
[Test]
public void hashonlambdas()
{
NullSpecification n1 = new NullSpecification(true);
NullSpecification n2 = new NullSpecification(true);
Assert.AreEqual(n1.GetHashCode(), n2.GetHashCode());
}
$
Можете ли вы сказать мне, если я делаю что-то не такили, может быть, лямбды не являются объектами значения