Вот мой тестовый код (содержит не возвращает истину, когда оно должно быть):IEqualityComparer дает неправильный результат
HashSet<TilePosition> test = new HashSet<TilePosition>(new TilePositionCompare());
test.Add(new TilePosition(10,10));
if (test.Contains(new TilePosition(10,10)))
Debug.Log("We should see this");
Мои сравнения Класс: с помощью System.Collections.Generic;
public class TilePositionCompare : IEqualityComparer<TilePosition>
{
public bool Equals(TilePosition tileA, TilePosition tileB)
{
return tileA.PosX == tileB.PosX && tileA.PosY == tileB.PosY;
}
public int GetHashCode(TilePosition tile)
{
return tile.GetHashCode();
}
}
Вот класс, я хочу, чтобы сравнить:
using System.Collections;
public class TilePosition
{
int posX;
int posY;
public TilePosition (int posX, int posY)
{
this.posX = posX;
this.posY = posY;
}
}
Я не уверен, где я неправильно. Я следил за некоторыми учебниками, которые, похоже, делают то же самое.
Вы, кажется, использует свойства PosX и Пози в методе Equals, где они в вашем классе? – SpaceghostAli