using System; using System.Collections; using System.Collections.Generic; namespace BikeFinal { class Bike : IComparable<Bike> { private string Name { get; set; } private string Producer { get; set; } private double Price { get; set; } public Bike() { } public Bike(string name, string producer, double price) { Name = name; Producer = producer; Price = price; } public override string ToString() { return $"name={Name} producer={Producer} price={Price}"; } public int CompareTo(Bike other) { return other.Price.CompareTo(Price); } } //далее классы, наследники от Bike(Monatin, ElectroBike, Urban, Crosscountry), которые я вырезал из за ненадобности abstract class Container { public virtual void Add(Bike b) { } public virtual void Remove(int index) { } public virtual void Remove(Bike b) { } public virtual void Sort() { } } class ArrayListContainer : Container { //private System.Collections.Generic.List<Bike> arrayList = new List<Bike>(); private ArrayList arrayList = new ArrayList(); public ArrayListContainer() { } public override void Add(Bike b) { arrayList.Add(b); } public override void Remove(Bike b) { if (arrayList.Contains(b)) arrayList.Remove(arrayList.IndexOf(b)); } public override void Remove(int index) { if (index < arrayList.Count) arrayList.RemoveAt(index); } public override void Sort() { arrayList.Sort(); } public override string ToString() { string res = "ArrayListContainer"; foreach (Bike b in arrayList) { res += "\n\t" + b.ToString(); } return res; } } class Program { static void Main(string[] args) { ArrayListContainer bikes = new ArrayListContainer(); bikes.Add(new Bike("xf14", "Cannondale", 14.0d)); bikes.Add(new Bike("gf43", "Cannondale", 17.7d)); bikes.Add(new Bike("vsd", "Cannondale", 13.4d)); Console.WriteLine(bikes); bikes.Sort(); Console.ReadLine(); } } } As a result, the list of bicycles is not sorted by price. An error is thrown.
Unhandled exception of type "System.InvalidOperationException" in mscorlib.dll
Additional information: Failure when comparing two elements of an array.