Как сделать так, чтобы метод поиска эксемпляра с максимальной стоимостью, работал в классе car, когда в основной прогармме всё работает?
Фрагмент из основной программы
class Program
{
private static List<Car> cars = new List<Car>();
private static Random rnd = new Random();
public static string[] NMarka = new string[] { "MersBZ", "Skoda", "Toyota", "Lada", "BMW", "Mustang", "Bentley", "Audi", "Bugatti", "Ford" };
public static Car GetMaxPriceCar()
{
Car maxPrice = null;
for (int i = 0; i < cars.Count; i++)
{
if (maxPrice==null || cars[i].price > maxPrice.price)
{
maxPrice = cars[i];
}
}
return maxPrice;
}
}
Фрагмент из класса Car
class Car : Trans
{
public bool TTH;
int runing;
public Car(int price, int power, string number, string mark, bool TTH, int runing) : base(price, power, number, mark)
{
this.TTH = TTH;
this.runing = runing;
}
public static Car GetMaxPriceCar()
{
Car maxPrice = null;
for (int i = 0; i < cars.Count; i++)
{
if (maxPrice == null || cars[i].price > maxPrice.price)
{
maxPrice = cars[i];
}
}
return maxPrice;
}
}
cars подчёркивает(ошибка: не существует в текущем контексте)
Ответы (1 шт):
Класс Car знает только о себе и должен оперировать только своими полями и свойствами. Массив cars выступает тут в роли репозитория, хранилища машин -- и это другая обязанность, её не должно быть в классе cars. У вас же написано в классе Program нужный метод - поэтому просто не пишите ничего в классе Car. Альтернатива: в классе Car создать статический метод, в который передавать cars либо вообще создать метод расширения (extension method) Это не очень хорошо использовать static для этого, но это всё же направление в правильную сторону - думать о cars как о репозиториях и иной ответственности
void Main()
{
// ...
}
private static List<Car> cars = new List<Car>();
private static Random rnd = new Random();
public static string[] NMarka = new string[] { "MersBZ", "Skoda", "Toyota", "Lada", "BMW", "Mustang", "Bentley", "Audi", "Bugatti", "Ford" };
// You can define other methods, fields, classes and namespaces here
public static class CarsRepository
{
public static int MaxPrice(Car[] cars)
{
return cars.Max(x => x.price);
}
public static Car CarWithMaxPrice(Car[] cars)
{
return cars.OrderByDescending(x => x.price).FirstOrDefault();
}
}
public class Car : Trans
{
public bool TTH { get; protected set; }
public int runing { get; protected set; }
public Car(int price, int power, string number, string mark, bool TTH, int runing)
: base(price, power, number, mark)
{
this.TTH = TTH;
this.runing = runing;
}
}
public class Trans
{
public int price { get; protected set; }
public int power { get; protected set; }
public string number { get; protected set; }
public string mark { get; protected set; }
public Trans(int price, int power, string number, string mark)
{
this.price = price;
this.power = power;
this.number = number;
this.mark = mark;
}
}