Advertisement
istomina_sofia

С# делегаты

May 29th, 2022
830
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.82 KB | None | 0 0
  1. using System;
  2.  
  3. namespace _10
  4. {
  5.     internal class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             Car volvo = new Car("Volvo 342G", 'B', 200, false);
  10.             volvo.Info();
  11.  
  12.             Car mersedes = new Car("Mersedes-Benz G-Class 4", 'G', 400, true);
  13.             mersedes.Info();
  14.  
  15.             Car lada = new Car("Priora", 'B', 180, false);
  16.             lada.Info();
  17.         }
  18.     }
  19. }
  20.  
  21. ------------------------------------------------------------------------------------------------
  22.  
  23. using System;
  24.  
  25. namespace _10
  26. {
  27.     internal class Car    // класс автомобиль
  28.     {
  29.         public string Name { get; set; }     //название автомобиля
  30.         public char CarClass { get; set; }    //класс автомобиля
  31.         public int Power { get; set; }    //мощность л.с.
  32.         public bool Ability { get; set; }    //возможность расчипирования и усиления мощности
  33.         public const int Ratio = 2;      // постоянный коэффициент увеличения мощности
  34.  
  35.         public Car() { }
  36.  
  37.         public Car(string Name, char CarClass, int Power, bool ability)  //конструктор с параметрами название, класс, мощность и возможность усиления мощности автомобиля
  38.         {
  39.             this.Name = Name;
  40.             this.CarClass = CarClass;
  41.             this.Power = Power;
  42.             Ability = ability;
  43.         }
  44.         public void Info() // метод выводящий информацию об автомобиле
  45.         {
  46.             Func<bool, int> MaxPower = (a) =>
  47.             {
  48.                 if (a == true)
  49.                 {
  50.                     return Power * Ratio;          //объявление делегата соответсвующий сигнатуре согласно варианту
  51.                 }
  52.                 else
  53.                 {
  54.                     return Power;
  55.                 }
  56.             };
  57.  
  58.             Action<Func<bool, int>, char, string> info = (maxPower, a, b) =>
  59.             {
  60.                 int Result = maxPower(Ability); // в переменную Result записывается значение, которое возвращает делегат при передаче в него параметра
  61.                 Console.WriteLine($"Название автомобиля:{b}\nМаксимальная мощность автомобиля:{ Result}\nКласс автомобиля:{ a}\n");
  62.             };
  63.  
  64.         info(MaxPower, CarClass, Name); //вызывание метода, который соответсвует сигнатуре делегата  варианта Action<Func<bool, int>, char, string>
  65.         }
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement