Você pode me explicar:
- O que é um Delegado Predicado?
- Onde devemos usar predicados?
- Alguma prática recomendada ao usar predicados?
O código-fonte descritivo será apreciado.
Um predicado é uma função que retorna true
ou false
. Um delegado de predicado é uma referência a um predicado.
Então, basicamente, um delegado predicado é uma referência a uma função que retorna true
or false
. Predicados são muito úteis para filtrar uma lista de valores - aqui está um exemplo.
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;
}
}
Agora, se você estiver usando o C # 3, poderá usar um lambda para representar o predicado de uma maneira mais limpa:
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
? Ou como isso funciona, como itera a lista inteira?greaterThanTwo
tem, pois é o método que está manipulando a sequência para você.return
yield return
FindAll
i > val
, em vez dei > 2
, ondeval
é o valor inserido pelo usuário.Seguindo a resposta de Andrew em relação a c # 2 e c # 3 ... você também pode fazê-las em linha para uma função de pesquisa única (veja abaixo).
Espero que isto ajude.
fonte
Apenas um delegado que retorna um booleano. É muito usado em listas de filtragem, mas pode ser usado onde você quiser.
fonte
Há um bom artigo sobre predicados aqui , embora seja da era .NET2, então não há menção de expressões lambda lá.
fonte
O que é delegado predicado?
1) Predicado é um recurso que retorna verdadeiro ou falso. Este conceito veio na estrutura .net 2.0. 2) Está sendo usado com a expressão lambda (=>). É preciso um tipo genérico como argumento. 3) Permite que uma função predicada seja definida e passada como parâmetro para outra função. 4) É um caso especial de a
Func
, na medida em que leva apenas um único parâmetro e sempre retorna um bool.No espaço de nome C #:
É definido no espaço para nome do sistema.
Onde devemos usar o delegado predicado?
Devemos usar o delegado predicado nos seguintes casos:
1) Para pesquisar itens em uma coleção genérica. por exemplo
2) Exemplo básico que reduz o código e retorna verdadeiro ou falso:
agora, Ligue acima do predicado:
3) Um método anônimo também pode ser atribuído a um tipo de delegado do Predicado, conforme abaixo:
Alguma prática recomendada sobre predicados?
Use Func, expressões lambda e delegados em vez de predicados.
fonte
Os métodos de pesquisa baseados em predicado permitem que um delegado de método ou expressão lambda decida se um determinado elemento é uma "correspondência". Um predicado é simplesmente um delegado aceitando um objeto e retornando verdadeiro ou falso: public delegate bool Predicate (objeto T);
fonte
Se você estiver no VB 9 (VS2008), um predicado pode ser uma função complexa:
Ou você pode escrever seu predicado como um lambda, desde que seja apenas uma expressão:
fonte
Predicado cai na categoria de delegados genéricos em C #. Isso é chamado com um argumento e sempre retorna o tipo booleano. Basicamente, o predicado é usado para testar a condição - verdadeiro / falso. Muitas classes suportam predicado como argumento. Por exemplo, list.findall espera o predicado do parâmetro. Aqui está um exemplo do predicado.
Imagine um ponteiro de função com a assinatura -
delegado bool myDelegate (correspondência T);
Aqui está o exemplo
Node.cs
Classe principal -
fonte
Simplesmente -> eles fornecem valores Verdadeiro / Falso com base na condição usada principalmente para consulta. usado principalmente com delegados
considere exemplo de lista
contém nomes e idades. Agora diga que queremos encontrar nomes na condição. Então, eu usarei,
tentou mantê-lo simples!
fonte
Um delegado define um tipo de referência que pode ser usado para encapsular um método com uma assinatura específica. Ciclo de vida do delegado de C #: O ciclo de vida do delegado de C # é
saiba mais formulário http://asp-net-by-parijat.blogspot.in/2015/08/what-is-delegates-in-c-how-to-declare.html
fonte