Интерфейс IComparable - как в программе происходит сравнение по health - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Подскажите пожалуйста , как в данной программе происходит сравнение по health ? ( программа рабочая )
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Pavlovs_199
{

        class Monster : IComparable
        {
            public Monster(int health, int ammo, string name)
            {
                this.health = health;
                this.ammo = ammo;
                this.name = name;
            }
 
            virtual public void Passport()
            {
                Console.WriteLine("Monster {0} \t health = {1} ammo = {2}",
                                    name, health, ammo);
            }
 
           public int CompareTo(object obj)           // реализация интерфейса
            { 
              Monster temp=(Monster)obj;
              if (this.health>temp.health)  return 1;
              if (this.health<temp.health)  return -1;
                                            return 0;
            }
            string name;
            int health, ammo;
 
        }
        class Class1
        {
            static void Main()
            {
 
                const int n = 3;
                Monster[] stado = new Monster[n];
 
                stado[0] = new Monster(50,50,"Вася");
                stado[1] = new Monster(80,80,"Петя");
                stado[2] = new Monster(40,10,"Маша");

                stado[0] = new Monster(50, 50, "Вася");
                stado[1] = new Monster(80, 80, "Петя");
                stado[2] = new Monster(40, 10, "Маша");

                Array.Sort(stado);           //  сортировка стала возможной
                foreach (Monster elem in stado) elem.Passport();
 
                Console.ReadKey();
 
            }
        }
    }
В классе Monster конструктором Monster создаются три объекта , это мне знакомо , понимаю . Но как логически увязать вот эту часть кода :
public int CompareTo(object obj)           // реализация интерфейса
            { 
              Monster temp=(Monster)obj;
              if (this.health>temp.health)  return 1;
              if (this.health<temp.health)  return -1;
                                            return 0;
            }
со сравнением по health не пойму . Каким образом , для чего нужно в логике программы return ?

Решение задачи: «Интерфейс IComparable - как в программе происходит сравнение по health»

textual
Листинг программы
Monster[] stado = new Monster[n];
stado[0] = new Monster(50,50,"Вася");
stado[1] = new Monster(80,80,"Петя");
stado[2] = new Monster(40,10,"Маша");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы