Lire en anglais

Partager via


Converter<TInput,TOutput> Délégué

Définition

Représente une méthode qui convertit un objet d'un type en un autre type.

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

Paramètres de type

TInput

Type de l'objet à convertir.

Ce paramètre de type est contravariant. Cela signifie que vous pouvez utiliser le type spécifié ou tout type moins dérivé. Pour plus d’informations sur la covariance et la contravariance, consultez Covariance et contravariance dans les génériques.
TOutput

Type en lequel l'objet en entrée doit être converti.

Ce paramètre de type est covariant. Cela signifie que vous pouvez utiliser le type spécifié ou tout type plus dérivé. Pour plus d’informations sur la covariance et la contravariance, consultez Covariance et contravariance dans les génériques.

Paramètres

input
TInput

Objet à convertir.

Valeur renvoyée

TOutput

TOutput représentant l'objet TInput converti.

Exemples

Cette section contient deux exemples de code. Le premier illustre le Converter<TInput,TOutput> délégué avec la ConvertAll méthode de la Array classe, et le deuxième illustre le délégué avec la ConvertAll méthode de la List<T> classe générique.

Exemple 1

L’exemple de code suivant définit une méthode nommée PointFToPoint qui convertit une PointF structure en Point structure. L’exemple crée ensuite un tableau de PointF structures, crée un Converter<PointF, Point> délégué (Converter(Of PointF, Point)dans Visual Basic) pour représenter la PointFToPoint méthode et transmet le délégué à la ConvertAll méthode. La ConvertAll méthode transmet chaque élément de la liste d’entrée à la PointFToPoint méthode et place les éléments convertis dans une nouvelle liste de Point structures. Les deux listes sont affichées.

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

Exemple 2

L’exemple de code suivant définit une méthode nommée PointFToPoint qui convertit une PointF structure en Point structure. L’exemple crée ensuite une List<T> structurePointF, crée un Converter\<PointF, Point> délégué (Converter(Of PointF, Point)dans Visual Basic) pour représenter la PointFToPoint méthode et transmet le délégué à la ConvertAll méthode. La ConvertAll méthode transmet chaque élément de la liste d’entrée à la PointFToPoint méthode et place les éléments convertis dans une nouvelle liste de Point structures. Les deux listes sont affichées.

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

Remarques

Ce délégué est utilisé par la ConvertAll méthode de la Array classe et la ConvertAll méthode de la List<T> classe pour convertir chaque élément de la collection d’un type à un autre.

Méthodes d’extension

GetMethodInfo(Delegate)

Obtient un objet qui représente la méthode représentée par le délégué spécifié.

S’applique à

Produit Versions
.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