Esta documentación está archivada y no tiene mantenimiento.

Delegado genérico Converter

Nota: este delegado es nuevo en la versión 2.0 de .NET Framework.

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

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

public delegate TOutput Converter<TInput,TOutput> (
	TInput input
)
J# admite el uso de métodos y tipos genéricos, pero no admite la declaración de métodos y tipos nuevos.
JScript no admite el uso de métodos y tipos genéricos.

Parámetros de tipo

TInput

Tipo de objeto que se va a convertir.

TOutput

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

Parámetros

input

Objeto que se va a convertir.

Valor devuelto

TOutput que representa el TInput convertido.

El método ConvertAll de la clase Array y el método ConvertAll de la clase List utilizan este delegado para convertir cada elemento de la colección de un tipo a otro.

Esta sección contiene dos ejemplos de código. En el primero se muestra el delegado Converter con el método ConvertAll de la clase Array, y en el segundo se muestra el delegado con el método ConvertAll de la clase genérica List.

Ejemplo 1

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

using System;
using System.Drawing;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        PointF[] apf = {
            new PointF(27.8F, 32.62F),
            new PointF(99.3F, 147.273F),
            new PointF(7.5F, 1412.2F) };

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

        Point[] ap = Array.ConvertAll(apf, 
            new Converter<PointF, Point>(PointFToPoint));

        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 estructura PointF en una estructura Point. A continuación, en el ejemplo se crea un objeto List de estructuras PointF, se crea un delegado Converter<PointF, Point> (Converter(Of PointF, Point) en Visual Basic) para representar al método PointFToPoint y se pasa el delegado al método ConvertAll. El método ConvertAll pasa cada elemento de la lista de entrada al método PointFToPoint y coloca los elementos convertidos en una nueva lista de estructuras Point. Se muestran ambas listas.

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}
 */

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0

.NET Compact Framework

Compatible con: 2.0
Mostrar: