using System.Collections.Generic;
private static FilteredNumbers staticEvenFilteredNumbers = new FilteredNumbers(IsEven);
public static void Main()
Console.WriteLine("Часть 1:");
var evenNumbers = new FilteredNumbers(IsEven);
Console.WriteLine("Часть 2:");
var largeNumbers = new FilteredNumbers(IsGreaterThan5);
Console.WriteLine("Часть 3:");
evenNumbers.IterateNumbers(AddToEvenNumbers);
largeNumbers.IterateNumbers(AddToEvenNumbers);
private static bool IsEven(int num) => num % 2 == 0;
private static bool IsGreaterThan5(int num) => num > 5;
private static void NumberPrinter(int num) => Console.WriteLine(num);
private static void MessagedNumberPrinter(int num) => Console.WriteLine($"Число равно {num}");
private static void AddToEvenNumbers(int num) => staticEvenFilteredNumbers.Add(num);
public class FilteredNumbers
private List<int> filteredNumbers = new();
public FilteredNumbers(Filter filter)
if (this.filter.Invoke(n))
this.filteredNumbers.Add(n);
public void IterateNumbers(ActionOnNumber action)
foreach (var num in this.filteredNumbers)
public delegate bool Filter(int number);
public delegate void ActionOnNumber(int number);