Я работаю над программой (изучаю C #), которая создает объект (Card) и в программе сортирует колоду карт по значению.Меня сбивает с толку то, как можно сортировать колоду карт по значению карт, когда экземпляр объекта - это не параметр, передаваемый методу, а объект класса.Ниже приведен код, помогающий ответить на мой вопрос - я бы выполнил следующее, если бы передавал экземплярный объект.
Класс для создания объекта:
class Card
{
public Suits Suit { get; set; }
public Values Value { get; set; }
public Card(Suits suit, Values value)
{
this.Suit = suit;
this.Value = value;
}
public string Name
{
get { return Value.ToString() + " of " + Suit.ToString(); }
}
public override string ToString()
{
return Name;
}
}
В другом классе я нахожусьвызов метода, который создает экземпляр объекта (CardComparer_byValue), который наследуется от интерфейса IComparer.Вот тут-то и возникает моя путаница.
public void SortByValue() {
cards.Sort(new CardComparer_byValue());
}
И класс SortByValue
class CardComparer_byValue : IComparer<Card>
{
public int Compare(Card x, Card y)
{
if (x.Value > y.Value)
return 1;
if (x.Value < y.Value)
return -1;
if (x.Suit > y.Suit)
return 1;
if (x.Suit < y.Suit)
return -1;
return 0;
}
}
Я думаю, что вышеуказанный метод "SortByValue" был назван так
Card mycard = new Card("Spades", 4);
public void SortByValue() {
cards.Sort(new CardComparer_byValue(mycard));
}
Так кто-нибудь объяснит мне, что мне не хватает, как сортировка может работать таким образом?