Язык программирования C#9 и платформа .NET5. Страница 180
Если снова запустить приложение и просмотреть его вывод (показанный далее), то будет видно, что возвращаемый методом
Clone()PointрЗр4***** Fun with Object Cloning *****Cloned p3 and stored new Point in p4Before modification:p3: X = 100; Y = 100; Name = Jane;ID = 51f64f25-4b0e-47ac-ba35-37d263496406p4: X = 100; Y = 100; Name = Jane;ID = 0d3776b3-b159-490d-b022-7f3f60788e8aChanged p4.desc.petName and p4.XAfter modification:p3: X = 100; Y = 100; Name = Jane;ID = 51f64f25-4b0e-47ac-ba35-37d263496406p4: X = 9; Y = 100; Name = My new Point;ID = 0d3776b3-b159-490d-b022-7f3f60788e8aДавайте подведем итоги по процессу клонирования. При наличии класса или структуры, которая содержит только типы значений, необходимо реализовать метод
Clone()MemberwiseClone()Интерфейс IComparable
Интерфейс
System.IComparable// Данный интерфейс позволяет объекту указывать// его отношение с другими подобными объектамиpublic interface IComparable{ int CompareTo(object o);}На заметку! Обобщенная версия этого интерфейса (
IСоmраrаble<Т>Создайте новый проект консольного приложения по имени
ComparableCarCarRadioSimpleExceptionComparableCarCarusing System;using System.Collections;namespace ComparableCar{ public class Car { ... public int CarID {get; set;} public Car(string name, int currSp, int id) { CurrentSpeed = currSp; PetName = name; CarID = id; } ... }}Теперь предположим, что имеется следующий массив объектов
Carusing System;using ComparableCar;Console.WriteLine("***** Fun with Object Sorting *****\n");// Создать массив объектов Car.Car[] myAutos = new Car[5];myAutos[0] = new Car("Rusty", 80, 1);myAutos[1] = new Car("Mary", 40, 234);myAutos[2] = new Car("Viper", 40, 34);myAutos[3] = new Car("Mel", 40, 4);myAutos[4] = new Car("Chucky", 40, 5);Console.ReadLine();В классе
System.ArraySort()intshortstringIComparableSort()Car// Сортируются ли объекты Car? Пока еще нет!Array.Sort(myAutos);Запустив тестовый код, вы получите исключение времени выполнения, потому что класс
CarIComparableСоmраrеТо()CarCarID// Итерация по объектам Car может быть упорядочена на основе CarID.public class Car : IComparable{
Перейти на страницу:
Изменить размер шрифта: