나는 자기 공명 이미지를 공간적으로 정렬하고이를 생성하는 데 사용 된 다양한 획득 매개 변수를 기반으로 그룹으로 정렬하는 계층 적 컬렉션 클래스를 구축 중입니다. 그룹화를 수행하는 데 사용되는 특정 방법은 클래스 사용자가 제공합니다. 아래 샘플 코드에서 관련 기능을 추상화했습니다. IEquatable<MyClass>
구현의 경우 두 개의 MyClass
인스턴스의 _myHelperDelegate
특성을 비교하여 두 대리자가 동일한 코드를 가리키는 지 확인할 수 있기를 바랍니다. 아래의 if 문에 (_myHelperDelegate == other._myHelperDelegate)
절이 분명히 잘못되었습니다 (컴파일이 실패하여 "메서드 이름 예상"오류가 발생합니다). 내 질문은 두 대리자가 동일한 코드 조각을 참조하는지 확인하는 방법이 있습니까? 그렇다면 어떻게해야합니까?동등성 테스트 대표자
public class MyClass : IEquatable<MyClass>
{
public delegate object HelperDelegate(args);
protected internal HelperDelegate _myHelperDelegate;
public MyClass(HelperDelegate helper)
{
...
_myHelperDelegate = helper;
}
public bool Equals(MyClass other)
{
if (
(_myHelperDelegate == other._myHelperDelegate) &&
(... various other comparison criteria for equality of two class instances...)
)
return true;
return false;
}
}
"나는 공간적으로 자기 공명 영상을 주문하는 계층 적 수집 클래스를 구축하고 있습니다."당신은 나를 잃어 버렸습니다. –
Delegate 클래스에는 'Equals()'메서드가 있습니다 (http://msdn.microsoft.com/en-us/library/99bthb1z(v=VS.90).aspx), 시도해 보셨습니까? – CodingGorilla
문제의 원인에 대한 나의 직감이 올바르지 않습니다. ==를 사용하는 두 대표의 비교는 실제로 작동합니다. 문제는 원래 코드의 구문 오류입니다. 나는 if 문에 && 절을 놓치고있었습니다. * ImagePalm * – Matt