Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 180
- Предыдущая
- 180/642
- Следующая
Изменить размер шрифта:
180
Если снова запустить приложение и просмотреть его вывод (показанный далее), то будет видно, что возвращаемый методом
Clone()
Point
рЗ
р4
***** Fun with Object Cloning *****
Cloned p3 and stored new Point in p4
Before modification:
p3: X = 100; Y = 100; Name = Jane;
ID = 51f64f25-4b0e-47ac-ba35-37d263496406
p4: X = 100; Y = 100; Name = Jane;
ID = 0d3776b3-b159-490d-b022-7f3f60788e8a
Changed p4.desc.petName and p4.X
After modification:
p3: X = 100; Y = 100; Name = Jane;
ID = 51f64f25-4b0e-47ac-ba35-37d263496406
p4: 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<Т>
Создайте новый проект консольного приложения по имени
ComparableCar
Car
Radio
SimpleException
ComparableCar
Car
using 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;
}
...
}
}
Теперь предположим, что имеется следующий массив объектов
Car
using 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.Array
Sort()
int
short
string
IComparable
Sort()
Car
// Сортируются ли объекты Car? Пока еще нет!
Array.Sort(myAutos);
Запустив тестовый код, вы получите исключение времени выполнения, потому что класс
Car
IComparable
СоmраrеТо()
Car
CarID
// Итерация по объектам Car может быть упорядочена на основе CarID.
public class Car : IComparable
{
180
- Предыдущая
- 180/642
- Следующая
Перейти на страницу: