У меня есть объект под названием Shape
, который содержит поле public int[,] coordinate { get; set; }
.IComparable in C#
У меня есть отдельный класс, который содержит коллекцию Shape
объектов. В определенной точке, я хочу, чтобы проверить:
if(shapes.Contains(shape))
{
// DoSomething
}
Так в Shape
классе я добавил IComparable
ссылки и вставил CompareTo
метод:
public int CompareTo(Shape other)
{
return this.coordinate.Equals(other.coordinate);
}
Однако я получаю сообщение об ошибке:
Cannot implicitly convert type 'bool' to 'int'
Как мне поэтому фраза return так, чтобы она возвращала int, а не bool, как это делается на данный момент?
UPDATE
Если изменить код возврата к:
return this.coordinate.CompareTo(other.coordinate);
Я получаю следующее электронного письма об ошибке:
Error 1 'ShapeD.Game_Objects.Shape' does not implement interface member 'System.IComparable.CompareTo(ShapeD.Game_Objects.Shape)'. 'ShapeD.Game_Objects.Shape.CompareTo(ShapeD.Game_Objects.Shape)' cannot implement 'System.IComparable.CompareTo(ShapeD.Game_Objects.Shape)' because it does not have the matching return type of 'int'. C:\Users\Usmaan\Documents\Visual Studio 2012\Projects\ShapeD\ShapeD\ShapeD\Game Objects\Shape.cs 10 18 ShapeD
Новое сообщение об ошибке просто изменить, изменить ** public int CompareTo (Shape other) ** to ** public int CompareTo (object other) **, но тогда вы столкнетесь с проблемами кастинга, а CompareTo не существует для многомерных массивов. –