System (Espacio de nombres)


Biblioteca de clases de .NET Framework
Converter<(Of <(TInput, TOutput>)>) (Delegado)

Actualización: noviembre 2007

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

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

Visual Basic (Declaración)
Public Delegate Function Converter(Of TInput, TOutput) ( _
    input As TInput _
) As TOutput
Visual Basic (Uso)
Dim instance As New Converter(Of TInput, TOutput)(AddressOf HandlerMethod)
C#
public delegate TOutput Converter<TInput, TOutput>(
    TInput input
)
Visual C++
generic<typename TInput, typename TOutput>
public delegate TOutput Converter(
    TInput input
)
J#
J# admite el uso de APIs genéricas pero no admite la declaración de nuevas API.
JScript
JScript no admite el uso de métodos ni 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
Tipo: TInput
Objeto que se va a convertir.

Valor devuelto

Tipo: TOutput
TOutput que representa el TInput convertido.
Comentarios

El método ConvertAll<(Of <(TInput, TOutput>)>) de la clase Array y el método ConvertAll<(Of <(TOutput>)>) de la clase List<(Of <(T>)>) utilizan este delegado para convertir cada elemento de la colección de un tipo a otro.

Ejemplos

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

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<(Of <(TInput, TOutput>)>). El método ConvertAll<(Of <(TInput, TOutput>)>) 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.

Visual Basic
Imports System
Imports System.Drawing
Imports System.Collections.Generic

Public Class Example

    Public Shared Sub Main()

        Dim apf() As PointF = { _
            New PointF(27.8, 32.62), _
            New PointF(99.3, 147.273), _
            New PointF(7.5, 1412.2)  }

        Console.WriteLine()
        For Each p As PointF In apf
            Console.WriteLine(p)
        Next

        Dim ap() As Point = Array.ConvertAll(apf, _
            New Converter(Of PointF, Point)(AddressOf PointFToPoint))

        Console.WriteLine()
        For Each p As Point In ap
            Console.WriteLine(p)
        Next

    End Sub

    Public Shared Function PointFToPoint(ByVal pf As PointF) _
        As Point

        Return New Point(CInt(pf.X), CInt(pf.Y))
    End Function
End Class

' 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=28,Y=33}
'{X=99,Y=147}
'{X=8,Y=1412}
C#
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}
 */
Visual C++
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections::Generic;

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

void main()
{
    array<PointF>^ apf = {
        PointF(27.8F, 32.62F),
        PointF(99.3F, 147.273F),
        PointF(7.5F, 1412.2F) };

    Console::WriteLine();
    for each(PointF p in apf)
    {
        Console::WriteLine(p);
    }

    array<Point>^ ap = 
        Array::ConvertAll(apf, 
            gcnew Converter<PointF, Point>(PointFToPoint)
        );

    Console::WriteLine();
    for each(Point p in ap)
    {
        Console::WriteLine(p);
    }
}

/* 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<(Of <(T>)>) 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<(Of <(TOutput>)>). El método ConvertAll<(Of <(TOutput>)>) 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.

Visual Basic
Imports System
Imports System.Drawing
Imports System.Collections.Generic

Public Class Example

    Public Shared Sub Main()

        Dim lpf As New List(Of PointF)

        lpf.Add(New PointF(27.8, 32.62))
        lpf.Add(New PointF(99.3, 147.273))
        lpf.Add(New PointF(7.5, 1412.2))

        Console.WriteLine()
        For Each p As PointF In lpf
            Console.WriteLine(p)
        Next

        Dim lp As List(Of Point) = lpf.ConvertAll( _
            New Converter(Of PointF, Point)(AddressOf PointFToPoint))

        Console.WriteLine()
        For Each p As Point In lp
            Console.WriteLine(p)
        Next

    End Sub

    Public Shared Function PointFToPoint(ByVal pf As PointF) _
        As Point

        Return New Point(CInt(pf.X), CInt(pf.Y))
    End Function
End Class

' 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=28,Y=33}
'{X=99,Y=147}
'{X=8,Y=1412}
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}
 */
Visual C++
#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections::Generic;

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

void main()
{
    List<PointF>^ lpf = gcnew List<PointF>();

    lpf->Add(PointF(27.8F, 32.62F));
    lpf->Add(PointF(99.3F, 147.273F));
    lpf->Add(PointF(7.5F, 1412.2F));

    Console::WriteLine();
    for each(PointF p in lpf)
    {
        Console::WriteLine(p);
    }

    List<Point>^ lp = 
        lpf->ConvertAll<Point>(
            gcnew Converter<PointF, Point>(PointFToPoint)
        );

    Console::WriteLine();
    for each(Point p in lp)
    {
        Console::WriteLine(p);
    }
}

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

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

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión

.NET Framework

Compatible con: 3.5, 3.0, 2.0

.NET Compact Framework

Compatible con: 3.5, 2.0

XNA Framework

Compatible con: 2.0, 1.0
Vea también

Referencia

Etiquetas :


Page view tracker