Mam obiekt o nazwie Shape
, który zawiera pole public int[,] coordinate { get; set; }
.IComparable in C#
Mam oddzielną klasę, która ma kolekcję obiektów Shape
. W konkretnym punkcie, życzę, by sprawdzić:
if(shapes.Contains(shape))
{
// DoSomething
}
Więc w klasie Shape
Dodałem odniesienia IComparable
i dodaje metodę CompareTo
:
public int CompareTo(Shape other)
{
return this.coordinate.Equals(other.coordinate);
}
Ja jednak otrzymuję błąd:
Cannot implicitly convert type 'bool' to 'int'
Jak zatem sformułować zwrot tak, aby zwracał int, a nie bool, tak jak obecnie?
UPDATE
Gdybym zmienić kod powrotny do:
return this.coordinate.CompareTo(other.coordinate);
otrzymuję następujący mesage błąd:
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
Nowy komunikat o błędzie jest dość proste do rozwiązania, zmień ** public int CompareTo (Shape other) ** na ** public int CompareTo (object other) **, ale wtedy napotkasz problemy z odlewaniem i CompareTo nie istnieje dla tablic wielowymiarowych. –