Key 클래스에 일부 멤버가 있습니다. 키 객체의 멤버가 하나 뿐인 경우 어떻게 사전을 필터링합니까?일부 키의 사전에서 키 값 쌍을 모두 선택하는 방법
class Key
{
public int a { get; set; }
public int b { get; set; }
}
public class KeyEqualityComparer : IEqualityComparer<Key>
{
public int GetHashCode(Key k)
{
return (k.a + k.b).GetHashCode();
}
public bool Equals(Key lhs, Key rhs)
{
return ((lhs.a == rhs.a) && (lhs.b == rhs.b));
}
}
static Dictionary<Key, int> Data = new Dictionary<Key, int>(new KeyEqualityComparer());
static void Main(string[] args)
{
Data.Add(new Key() { a = 0, b = 0 }, 99);
Data.Add(new Key() { a = 1, b = 0 }, 99);
// select all keys value pairs where the key contains a == 0
}
귀하의 경우 중요하지만'(2 + 3) .GetHashCode()'및 ((6 + (-1)). GetHashCode()'와 완전히 다른 쌍은 수치 적 관점이지만 동일한 결과를 준다. – Tigran
U가 정확합니다. 나는 아직 그것에 대해 생각하지 않았다. 지적 해 주셔서 고마워요. – chhenning
다음은 좋은 해시 코드 수식입니다. http://stackoverflow.com/a/892640/781792 –