0
나는 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());
}
임 뭔가를하고있는 경우
당신은 잘못 또는 어쩌면 람다는 값이 아닌 내가 람다 대리자가와 위양이 참조 형식이기 때문에 그것은 생각
LambdaTest는 NullSpecification과 어떤 관련이 있습니까? –
람다식이 대리자라고 생각했습니다. 그럼에도 불구하고, 당신이 테스트해야 할 평등 또는 동일한 대상입니까? – Swanny
샘플 코드는 실제 코드를 추출한 것일뿐입니다 (명확하지 않은 부분을 제거한다고 생각합니다). 그러나 Predicate 속성은 기본적으로 두 개체에서 동일하므로 Predicate.GetHashCode()는 Equals 인 경우 동일한 값을 반환해야합니다. – jorge