Создать структуру «Мотоцикл» - C#
Формулировка задачи:
Доброго времени суток.
Помогите, пожалуйста, с решением задачи:
"Требуется создать структуру «Мотоцикл», определить в нем поля: марка, модель, объем двигателя, цена. Определить метод GetInfo (или переопределить ToString), возвращающий характеристики мотоцикла.
Используя интерфейс IСomparer, требуется реализовать возможность сортировки списка «Мотоциклов» по каждому из полей.
В оконном приложении нужно задать (жестко в коде программы) список из нескольких мотоциклов (не меньше 5), затем вывести на форму в два различных текстовых поля или ListBox-а этот список, отсортированный в первом поле – по цене по убыванию, во втором – по марке в прямом алфавитном порядке(a-z)".
Решение задачи: «Создать структуру «Мотоцикл»»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
var motosSource = new []
{
new Moto
{
EngineVolume = 12,
Mark = "z",
Model = "model1",
Price = 250000
},
new Moto
{
EngineVolume = 14,
Mark = "a",
Model = "model2",
Price = 350000
},
new Moto
{
EngineVolume = 7,
Mark = "c",
Model = "model3",
Price = 150000
},
new Moto
{
EngineVolume = 9,
Mark = "b",
Model = "model4",
Price = 200000
},
new Moto
{
EngineVolume = 9,
Mark = "b",
Model = "model5",
Price = 100000
},
};
var sortedByPrice = motosSource.ToArray();
Array.Sort(sortedByPrice, new MotoInversePriceComparer());
var sortedByMark = motosSource.ToArray();
Array.Sort(sortedByMark, new MotoMarkComparer());
foreach (var moto in sortedByPrice)
Console.WriteLine(moto);
Console.WriteLine();
foreach (var moto in sortedByMark)
Console.WriteLine(moto);
Console.ReadLine();
}
}
public struct Moto
{
public string Mark { get; set; }
public string Model { get; set; }
public decimal EngineVolume { get; set; }
public decimal Price { get; set; }
public override string ToString()
{
return $"Mark: {Mark}, Model: {Model}, EngineVolume: {EngineVolume}, Price: {Price}";
}
}
public class MotoInversePriceComparer : IComparer<Moto>
{
public int Compare(Moto x, Moto y)
{
return y.Price.CompareTo(x.Price);
}
}
public class MotoMarkComparer : IComparer<Moto>
{
public int Compare(Moto x, Moto y)
{
return String.Compare(x.Mark, y.Mark, StringComparison.Ordinal);
}
}