Pouvez vous m'expliquer:
- Qu'est-ce qu'un délégué prédicat?
- Où devrions-nous utiliser des prédicats?
- Des meilleures pratiques lors de l'utilisation de prédicats?
Un code source descriptif sera apprécié.
Un prédicat est une fonction qui renvoie true
ou false
. Un délégué de prédicat est une référence à un prédicat.
Donc, fondamentalement, un délégué prédicat est une référence à une fonction qui retourne true
ou false
. Les prédicats sont très utiles pour filtrer une liste de valeurs - voici un exemple.
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int> { 1, 2, 3 };
Predicate<int> predicate = new Predicate<int>(greaterThanTwo);
List<int> newList = list.FindAll(predicate);
}
static bool greaterThanTwo(int arg)
{
return arg > 2;
}
}
Maintenant, si vous utilisez C # 3, vous pouvez utiliser un lambda pour représenter le prédicat d'une manière plus propre:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> list = new List<int> { 1, 2, 3 };
List<int> newList = list.FindAll(i => i > 2);
}
}
yeild return
place? Ou comment ça marche, comment ça se répète sur toute la liste?greaterThanTwo
n'estreturn
pas le casyield return
puisque c'est laFindAll
méthode qui gère la séquence pour vous.i > val
, au lieu dei > 2
, oùval
est la valeur entrée par l'utilisateur.S'inspirant de la réponse d'Andrew en ce qui concerne c # 2 et c # 3 ... vous pouvez également les faire en ligne pour une fonction de recherche unique (voir ci-dessous).
J'espère que cela t'aides.
la source
Juste un délégué qui retourne un booléen. Il est beaucoup utilisé dans les listes de filtrage mais peut être utilisé où vous le souhaitez.
la source
Il y a un bon article sur les prédicats ici , bien qu'il soit de l'ère .NET2, donc il n'y a aucune mention d'expressions lambda là-dedans.
la source
Qu'est-ce que Predicate Delegate?
1) Le prédicat est une fonctionnalité qui renvoie vrai ou faux.Ce concept est venu dans le cadre .net 2.0. 2) Il est utilisé avec l'expression lambda (=>). Il prend le type générique comme argument. 3) Il permet de définir une fonction de prédicat et de la passer en paramètre à une autre fonction. 4) C'est un cas particulier de a
Func
, en ce qu'il ne prend qu'un seul paramètre et renvoie toujours un booléen.Dans l'espace de noms C #:
Il est défini dans l'espace de noms System.
Où devrions-nous utiliser Predicate Delegate?
Nous devons utiliser Predicate Delegate dans les cas suivants:
1) Pour rechercher des éléments dans une collection générique. par exemple
2) Exemple de base qui raccourcit le code et renvoie vrai ou faux:
maintenant, appelez le prédicat ci-dessus:
3) Une méthode anonyme peut également être affectée à un type de délégué prédicat comme ci-dessous:
Des meilleures pratiques concernant les prédicats?
Utilisez Func, Lambda Expressions et Delegates au lieu de Predicates.
la source
Les méthodes de recherche basées sur les prédicats permettent à un délégué de méthode ou à une expression lambda de décider si un élément donné est une «correspondance». Un prédicat est simplement un délégué qui accepte un objet et renvoie vrai ou faux: public delegate bool Predicate (objet T);
la source
Si vous êtes dans VB 9 (VS2008), un prédicat peut être une fonction complexe:
Ou vous pouvez écrire votre prédicat en tant que lambda, tant qu'il ne s'agit que d'une seule expression:
la source
Le prédicat appartient à la catégorie des délégués génériques en C #. Ceci est appelé avec un argument et renvoie toujours le type booléen. Fondamentalement, le prédicat est utilisé pour tester la condition - vrai / faux. De nombreuses classes prennent en charge le prédicat comme argument. Par exemple, list.findall attend le prédicat de paramètre. Voici un exemple du prédicat.
Imaginez un pointeur de fonction avec la signature -
délégué booléen myDelegate (correspondance T);
Voici l'exemple
Node.cs
Classe principale -
la source
Simplement -> ils fournissent des valeurs Vrai / Faux en fonction de la condition principalement utilisée pour les requêtes. principalement utilisé avec les délégués
considérer un exemple de liste
contient des noms et des âges. Maintenant, disons que nous voulons trouver des noms à condition donc je vais utiliser,
essayé de garder les choses simples!
la source
Un délégué définit un type de référence qui peut être utilisé pour encapsuler une méthode avec une signature spécifique. Cycle de vie du délégué C #: le cycle de vie du délégué C # est
en savoir plus sous forme http://asp-net-by-parijat.blogspot.in/2015/08/what-is-delegates-in-c-how-to-declare.html
la source