Me puedes explicar:
- ¿Qué es un delegado predicado?
- ¿Dónde debemos usar predicados?
- ¿Alguna mejor práctica al usar predicados?
Se apreciará el código fuente descriptivo.
Un predicado es una función que devuelve true
o false
. Un delegado de predicado es una referencia a un predicado.
Entonces, básicamente, un predicado delegado es una referencia a una función que devuelve true
o false
. Los predicados son muy útiles para filtrar una lista de valores; aquí hay un ejemplo.
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;
}
}
Ahora, si está usando C # 3, puede usar una lambda para representar el predicado de una manera más limpia:
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
eso? ¿O cómo funciona eso, cómo se repite en toda la lista?greaterThanTwo
hareturn
hechoyield return
ya que es elFindAll
método que maneja la secuencia por usted.i > val
, en lugar dei > 2
, dóndeval
está el valor ingresado por el usuario.A partir de la respuesta de Andrew con respecto a c # 2 y c # 3 ... también puede hacerlas en línea para una función de búsqueda única (ver más abajo).
Espero que esto ayude.
fuente
Solo un delegado que devuelve un valor booleano. Se usa mucho en las listas de filtrado, pero se puede usar donde desee.
fuente
Hay un buen artículo sobre predicados aquí , aunque es de la época .NET2, así que no hay ninguna mención de las expresiones lambda en ese país.
fuente
¿Qué es el delegado predicado?
1) Predicate es una característica que devuelve verdadero o falso. Este concepto ha aparecido en .net 2.0 framework. 2) Se está utilizando con la expresión lambda (=>). Toma el tipo genérico como argumento. 3) Permite definir una función predicada y pasarla como parámetro a otra función. 4) Es un caso especial de un
Func
, ya que solo toma un único parámetro y siempre devuelve un bool.En el espacio de nombres C #:
Se define en el espacio de nombres del sistema.
¿Dónde deberíamos usar Predicate Delegate?
Deberíamos usar Predicate Delegate en los siguientes casos:
1) Para buscar artículos en una colección genérica. p.ej
2) Ejemplo básico que acorta el código y devuelve verdadero o falso:
ahora, llame al predicado anterior:
3) También se puede asignar un método anónimo a un tipo de delegado de predicado como se muestra a continuación:
¿Alguna mejor práctica sobre predicados?
Use Func, Expresiones Lambda y Delegados en lugar de Predicados.
fuente
Los métodos de búsqueda basados en predicados permiten que un delegado de métodos o una expresión lambda decida si un elemento dado es un "partido" Un predicado es simplemente un delegado que acepta un objeto y devuelve verdadero o falso: public delegate bool Predicate (objeto T);
fuente
Si está en VB 9 (VS2008), un predicado puede ser una función compleja:
O puede escribir su predicado como lambda, siempre y cuando sea solo una expresión:
fuente
Predicate cae en la categoría de delegados genéricos en C #. Esto se llama con un argumento y siempre devuelve el tipo booleano. Básicamente, el predicado se usa para probar la condición: verdadero / falso. Muchas clases admiten predicado como argumento. Por ejemplo, list.findall espera el predicado del parámetro. Aquí hay un ejemplo del predicado.
Imagine un puntero de función con la firma:
delegado bool myDelegate (coincidencia T);
Aquí está el ejemplo.
Node.cs
Clase principal -
fuente
Simplemente -> proporcionan valores verdaderos / falsos en función de la condición utilizada principalmente para las consultas. utilizado principalmente con delegados
considerar ejemplo de lista
contiene nombres y edades. Ahora digamos que queremos encontrar nombres en condición, así que usaré,
trató de mantenerlo simple!
fuente
Un delegado define un tipo de referencia que puede usarse para encapsular un método con una firma específica. C # delegado Ciclo de vida: El ciclo de vida del delegado de C # es
aprender más formulario http://asp-net-by-parijat.blogspot.in/2015/08/what-is-delegates-in-c-how-to-declare.html
fuente