static void Main(string[] args) { Random random = new Random(); DelRandom[] delegateRandoms = new DelRandom[3]; for (int i = 0; i < delegateRandoms.Length; i++) { delegateRandoms[i] = () => { int result = random.Next(20); Console.WriteLine(result); return(result); }; } DelAverage delAverage = (delRandoms) => (double)delRandoms.Sum(i => i.Invoke()) / (double)delRandoms.Length; Console.WriteLine("\n{0:##.##}", delAverage.Invoke(delegateRandoms)); Console.ReadLine(); }
static void Main() { // Enable Unicode Console.OutputEncoding = Encoding.Unicode; // випадкові числа Random rnd = new Random(); // випадкові цілі числа (великі числа погіршують читабельність) #region Створення цілих чисел int[] abc = new int[] { rnd.Next(sbyte.MinValue, sbyte.MaxValue), rnd.Next(sbyte.MinValue, sbyte.MaxValue), rnd.Next(sbyte.MinValue, sbyte.MaxValue) }; // виведення на екран Console.WriteLine("\nЗгенеровані випадкові цілі числа:\n"); Console.WriteLine($"\tA = {abc[0]:N0}"); Console.WriteLine($"\tB = {abc[1]:N0}"); Console.WriteLine($"\tC = {abc[2]:N0}"); #endregion #region 1. Спосіб. Через статичний метод і делегат #if false // створення змінної делегата DelAverage delAverage = AverageS; // вивід інформації Console.WriteLine("\n\tСереднє арифметичне значення цих чисел: " + $"{delAverage(abc[0], abc[1], abc[2]):N2}"); #endif #endregion #region 2. Спосіб. Через метод і делегат #if false // створення змінної делегата DelAverage delAverage = new Program().Average; // вивід інформації Console.WriteLine("\n\tСереднє арифметичне значення цих чисел: " + $"{delAverage(abc[0], abc[1], abc[2]):N2}"); #endif #endregion #region 3. Спосіб. Через анонімний метод #if false // створення змінної делегата DelAverage delAverage = delegate(int a, int b, int c) { // економія часу і місця return(AverageS(a, b, c)); }; // вивід інформації Console.WriteLine("\n\tСереднє арифметичне значення цих чисел: " + $"{delAverage(abc[0], abc[1], abc[2]):N2}"); #endif #endregion #region 4. Спосіб. Через лямда-вираз #if false // створення змінної делегата DelAverage delAverage = (a, b, c) => AverageS(a, b, c); // вивід інформації Console.WriteLine("\n\tСереднє арифметичне значення цих чисел: " + $"{delAverage(abc[0], abc[1], abc[2]):N2}"); #endif #endregion #region 5. Спосіб. Через лямда-вираз і без використання метода #if true // створення змінної делегата DelAverage delAverage = (a, b, c) => (a + b + c) / 3.0; // вивід інформації Console.WriteLine("\n\tСереднє арифметичне значення цих чисел: " + $"{delAverage(abc[0], abc[1], abc[2]):N2}"); #endif #endregion // повторення DoExitOrRepeat(); }