Leggere in inglese

Condividi tramite


Converter<TInput,TOutput> Delegato

Definizione

Rappresenta un metodo che converte un oggetto da un tipo in un altro.

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

Parametri di tipo

TInput

Tipo di oggetto da convertire.

Questo parametro di tipo è controvariante, ovvero puoi usare il tipo specificato o qualsiasi tipo meno derivato. Per altre informazioni sulla covarianza e la controvarianza, vedi Covarianza e controvarianza nei generics.
TOutput

Tipo in cui l'oggetto di input deve essere convertito.

Questo parametro di tipo è covariante, ovvero puoi usare il tipo specificato o qualsiasi tipo più derivato. Per altre informazioni sulla covarianza e la controvarianza, vedi Covarianza e controvarianza nei generics.

Parametri

input
TInput

Oggetto da convertire.

Valore restituito

TOutput

Oggetto TOutput che rappresenta l’oggetto TInput convertito.

Esempio

In questa sezione sono riportati due esempi di codice. Il primo illustra il Converter<TInput,TOutput> delegato con il ConvertAll metodo della Array classe e il secondo illustra il delegato con il ConvertAll metodo della List<T> classe generica.

Esempio 1

Nell'esempio di codice seguente viene definito un metodo denominato PointFToPoint che converte una PointF struttura in una Point struttura . L'esempio crea quindi una matrice di PointF strutture, crea un Converter<PointF, Point> delegato (Converter(Of PointF, Point) in Visual Basic) per rappresentare il PointFToPoint metodo e passa il delegato al ConvertAll metodo . Il ConvertAll metodo passa ogni elemento dell'elenco di input al PointFToPoint metodo e inserisce gli elementi convertiti in un nuovo elenco di Point strutture. Vengono visualizzati entrambi gli elenchi.

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

Esempio 2

Nell'esempio di codice seguente viene definito un metodo denominato PointFToPoint che converte una PointF struttura in una Point struttura . L'esempio crea quindi un List<T> oggetto di PointF strutture, crea un Converter\<PointF, Point> delegato (Converter(Of PointF, Point) in Visual Basic) per rappresentare il PointFToPoint metodo e passa il delegato al ConvertAll metodo . Il ConvertAll metodo passa ogni elemento dell'elenco di input al PointFToPoint metodo e inserisce gli elementi convertiti in un nuovo elenco di Point strutture. Vengono visualizzati entrambi gli elenchi.

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

Commenti

Questo delegato viene utilizzato dal ConvertAll metodo della Array classe e dal ConvertAll metodo della List<T> classe per convertire ogni elemento della raccolta da un tipo a un altro.

Metodi di estensione

GetMethodInfo(Delegate)

Ottiene un oggetto che rappresenta il metodo rappresentato dal delegato specificato.

Si applica a

Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.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
.NET Standard 2.0, 2.1