Vladimirll
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте! Подскажите пожалуйста . Если можете скорректируйте пошагово , правильно ли я понимаю в программе , программа рабочая ( для меня это важно) : 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,"Маша"); Array.Sort(stado); // сортировка стала возможной foreach (Monster elem in stado) elem.Passport(); Console.ReadKey(); } } } Итак , с самого начала : 1_цикл 1шаг) В конструктор попадают значения new Monster(50,50,"Вася") ; 2шаг) А в public int CompareTo(object obj) new Monster(80,80,"Петя") ; 3шаг) Происходит сравнение в public int CompareTo(object obj) : this.health и temp.health ; 4шаг) По результату сравнения получается return -1 т.е. ничего не меняется ; 2_цикл 1шаг) В конструктор попадают значения new Monster(80,80,"Петя") ; 2шаг) А в public int CompareTo(object obj) new Monster(40,10,"Маша") ; 3шаг) Происходит сравнение в public int CompareTo(object obj) : this.health и temp.health ; 4шаг) По результату сравнения получается return 1 т.е. Петя и Маша меняются местами; 3_цикл (начинаем с начала массива объектов) 1шаг) В конструктор попадают значения new Monster(50,50,"Вася") ; 2шаг) А в public int CompareTo(object obj) new Monster(40,10,"Маша ") ; 3шаг) Происходит сравнение в public int CompareTo(object obj) : this.health и temp.health ; 4шаг) По результату сравнения получается return 1 т.е. Вася и Маша меняются местами; 4_цикл 1шаг) В конструктор попадают значения new Monster(50,50,"Вася") ; 2шаг) А в public int CompareTo(object obj) new Monster(80,80,"Петя") ; 3шаг) Происходит сравнение в public int CompareTo(object obj) : this.health и temp.health ; 4шаг) По результату сравнения получается return -1 т.е. ничего не меняется ; |