0
私が理解しているように、同じパラメータで同じコードを同じ順序で宣言する限り、lambdaは等しいはずです。ラムダ値オブジェクトはありますか?
しかし、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());
}
イムは、何か間違ったことをやってまたは多分ラムダ値が、私はラムダが代理人であるとDelgateが参照型であるので、それはだと思う
LambdaTestはNullSpecificationにどのように関連していますか? –
ラムダ式がデリゲートだと思った。それにかかわらず、それはあなたがテストすべき平等または同じ目的ですか? – Swanny
サンプルコードは、私の実際のコードの単なる抽出です(私はそれを非常に明確にしないいくつかの部分を削除すると思います)。しかし、フォーカスは、Predicateプロパティは基本的に両方のオブジェクトで同じであるため、Predicate.GetHashCode()はEqualsの場合は同じものを返す必要があります。 – jorge