Главная страница » C# » 44. Предикаты
Предикат — это функция, которая принимает один или несколько аргументов и возвращает true или false. В C# предикаты часто используются для фильтрации данных, проверки условий и работы с коллекциями.
В C# предикат можно представить:
bool-метод)Predicate<T>Пример предиката:
bool IsEven(int number)
{
return number % 2 == 0;
}
Вызов:
Console.WriteLine(IsEven(4)); // true
Console.WriteLine(IsEven(7)); // false
Predicate<T>C# предоставляет встроенный делегат Predicate<T>, который представляет метод, принимающий один аргумент типа T и возвращающий bool.
Пример:
Predicate isEven = num => num % 2 == 0;
Console.WriteLine(isEven(10)); // true
Console.WriteLine(isEven(11)); // false
Фактически, Predicate<T> — это сокращение для Func<T, bool>.
Методы коллекций, такие как List<T>.Find, FindAll, Exists, принимают предикаты.
Пример:
List numbers = new List { 1, 2, 3, 4, 5, 6 };
// Найти первое четное число
int evenNumber = numbers.Find(num => num % 2 == 0);
Console.WriteLine(evenNumber); // 2
// Найти все четные числа
List evenNumbers = numbers.FindAll(num => num % 2 == 0);
Console.WriteLine(string.Join(", ", evenNumbers)); // 2, 4, 6
// Проверить, есть ли числа больше 4
bool hasLargeNumbers = numbers.Exists(num => num > 4);
Console.WriteLine(hasLargeNumbers); // true
Можно передавать предикаты как параметры методов.
Пример:
bool CheckNumber(int number, Predicate condition)
{
return condition(number);
}
bool isPositive = CheckNumber(10, num => num > 0);
Console.WriteLine(isPositive); // true
В LINQ предикаты применяются в методах Where, Any, All и других.
Пример:
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0);
Console.WriteLine(string.Join(", ", evenNumbers)); // 2, 4
bool allPositive = numbers.All(num => num > 0);
Console.WriteLine(allPositive); // true
}
}
true или false и используются для проверки условий.Predicate<T> — встроенный делегат C# для предикатов.List<T> и LINQ (Where, Any, All).Напишите программу, которая:
Пример решения:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List numbers = new List { 5, 12, 8, 20, 3, 15 };
Predicate isGreaterThanTen = num => num > 10;
List filteredNumbers = numbers.FindAll(isGreaterThanTen);
Console.WriteLine("Числа больше 10: " + string.Join(", ", filteredNumbers));
}
}
Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.
Телефон: +375 33 910-08-92
Email: info@codefor.tech
Адрес: г. Барановичи, ул. Пирогова, д. 7
© 2024-2025 Все права защищены. CodeFor.
Язык сайта: