Leer en inglés

Compartir a través de


Converter<TInput,TOutput> Delegado

Definición

Representa un método que convierte un tipo de objeto a otro tipo.

C#
public delegate TOutput Converter<in TInput,out TOutput>(TInput input);
C#
public delegate TOutput Converter<TInput,TOutput>(TInput input);

Parámetros de tipo

TInput

Tipo de objeto que se va a convertir.

Este parámetro de tipo es contravariante, es decir, puede usar el tipo que haya especificado o cualquier tipo menos derivado. Si desea obtener más información sobre la covarianza y la contravarianza, consulte Covarianza y contravarianza en genéricos.
TOutput

Tipo al que se va a convertir el objeto de entrada.

Este parámetro de tipo es covariante, es decir, puede usar el tipo que haya especificado o cualquier tipo más derivado. Si desea obtener más información sobre la covarianza y la contravarianza, consulte Covarianza y contravarianza en genéricos.

Parámetros

input
TInput

Objeto que se va a convertir.

Valor devuelto

TOutput

TOutput que representa el TInput convertido.

Ejemplos

Esta sección contiene dos ejemplos de código. La primera muestra el Converter<TInput,TOutput> delegado con el ConvertAll método de la Array clase y el segundo muestra el delegado con el ConvertAll método de la List<T> clase genérica.

Ejemplo 1

En el ejemplo de código siguiente se define un método denominado PointFToPoint que convierte una PointF estructura en una Point estructura. A continuación, el ejemplo crea una matriz de PointF estructuras, crea un Converter<PointF, Point> delegado (Converter(Of PointF, Point) en Visual Basic) para representar el PointFToPoint método y pasa el delegado al ConvertAll método . El ConvertAll método pasa cada elemento de la lista de entrada al PointFToPoint método y coloca los elementos convertidos en una nueva lista de Point estructuras. Se muestran ambas listas.

C#
using System;
using System.Drawing;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        // Create an array of PointF objects.
        PointF[] apf = {
            new PointF(27.8F, 32.62F),
            new PointF(99.3F, 147.273F),
            new PointF(7.5F, 1412.2F) };

        // Display each element in the PointF array.
        Console.WriteLine();
        foreach( PointF p in apf )
            Console.WriteLine(p);

        // Convert each PointF element to a Point object.
        Point[] ap = Array.ConvertAll(apf,
            new Converter<PointF, Point>(PointFToPoint));

        // Display each element in the Point array.
        Console.WriteLine();
        foreach( Point p in ap )
        {
            Console.WriteLine(p);
        }
    }

    public static Point PointFToPoint(PointF pf)
    {
        return new Point(((int) pf.X), ((int) pf.Y));
    }
}

/* This code example produces the following output:

{X=27.8, Y=32.62}
{X=99.3, Y=147.273}
{X=7.5, Y=1412.2}

{X=27,Y=32}
{X=99,Y=147}
{X=7,Y=1412}
 */

Ejemplo 2

En el ejemplo de código siguiente se define un método denominado PointFToPoint que convierte una PointF estructura en una Point estructura. A continuación, en el ejemplo se crea un List<T> objeto de PointF estructuras, se crea un Converter\<PointF, Point> delegado (Converter(Of PointF, Point) en Visual Basic) para representar el PointFToPoint método y se pasa el delegado al ConvertAll método . El ConvertAll método pasa cada elemento de la lista de entrada al PointFToPoint método y coloca los elementos convertidos en una nueva lista de Point estructuras. Se muestran ambas listas.

C#
using System;
using System.Drawing;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        List<PointF> lpf = new List<PointF>();

        lpf.Add(new PointF(27.8F, 32.62F));
        lpf.Add(new PointF(99.3F, 147.273F));
        lpf.Add(new PointF(7.5F, 1412.2F));

        Console.WriteLine();
        foreach( PointF p in lpf )
        {
            Console.WriteLine(p);
        }

        List<Point> lp = lpf.ConvertAll(
            new Converter<PointF, Point>(PointFToPoint));

        Console.WriteLine();
        foreach( Point p in lp )
        {
            Console.WriteLine(p);
        }
    }

    public static Point PointFToPoint(PointF pf)
    {
        return new Point(((int) pf.X), ((int) pf.Y));
    }
}

/* This code example produces the following output:

{X=27.8, Y=32.62}
{X=99.3, Y=147.273}
{X=7.5, Y=1412.2}

{X=27,Y=32}
{X=99,Y=147}
{X=7,Y=1412}
 */

Comentarios

Este delegado lo usa el ConvertAll método de la Array clase y el ConvertAll método de la List<T> clase para convertir cada elemento de la colección de un tipo a otro.

Métodos de extensión

GetMethodInfo(Delegate)

Obtiene un objeto que representa el método representado por el delegado especificado.

Se aplica a

Producto Versiones
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1