Как я понимаю, 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());
}
$
Можете ли вы сказать мне, если Im делает что-то неправильно, или, может быть, лямбды не стоимость объектов
Как LambdaTest связан с NullSpecification? –
Я думал, что выражение лямбда было делегатом. Независимо от того, является ли это равенством или тем же объектом, над которым вы должны тестировать. – Swanny
Пример кода - это всего лишь выдержка моего реального кода (я думаю, что я удаляю некоторые части, которые делают его не очень понятным). Но основное внимание уделяется тому, что свойство Predicate в обоих случаях одинаково одинаково, поэтому Predicate.GetHashCode() должен возвращать то же самое, если они равны. – jorge