Auf Englisch lesen

Freigeben über


Converter<TInput,TOutput> Delegat

Definition

Stellt eine Methode dar, die ein Objekt von einem Typ in einen anderen Typ konvertiert.

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

Typparameter

TInput

Der Typ des umzuwandelnden Objekts.

Dieser Typparameter ist kontravariant. Das bedeutet, dass Sie entweder den angegebenen Typ oder einen weniger abgeleiteten Typ verwenden können. Weitere Informationen zu Kovarianz und Kontravarianz finden Sie unter Kovarianz und Kontravarianz in Generics.
TOutput

Der Typ, in den das Eingabeobjekt konvertiert werden soll.

Dieser Typparameter ist kovariant. Das bedeutet, dass Sie entweder den angegebenen Typ oder einen stärker abgeleiteten Typ verwenden können. Weitere Informationen zu Kovarianz und Kontravarianz finden Sie unter Kovarianz und Kontravarianz in Generics.

Parameter

input
TInput

Das zu konvertierende Objekt.

Rückgabewert

TOutput

Die TOutput, die die konvertierte TInput darstellt.

Beispiele

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Wird der Converter<TInput,TOutput> Stellvertretung mit der ConvertAll Methode der Array Klasse veranschaulicht, und der zweite veranschaulicht den Stellvertretung mit der ConvertAll Methode der List<T> generischen Klasse.

Beispiel 1

Im folgenden Codebeispiel wird eine Methode definiert PointFToPoint , die eine Struktur in eine PointF Point Struktur konvertiert. Im Beispiel wird dann ein Array von PointF Strukturen erstellt, eine Converter<PointF, Point> Stellvertretung (Converter(Of PointF, Point)in Visual Basic) erstellt, um die PointFToPoint Methode darzustellen, und übergeben sie die Stellvertretung an die ConvertAll Methode. Die ConvertAll Methode übergibt jedes Element der Eingabeliste an die PointFToPoint Methode und fügt die konvertierten Elemente in eine neue Liste der Point Strukturen ein. Beide Listen werden angezeigt.

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

Beispiel 2

Im folgenden Codebeispiel wird eine Methode definiert PointFToPoint , die eine Struktur in eine PointF Point Struktur konvertiert. Im Beispiel wird dann eine List<T> Struktur PointF erstellt, eine Converter\<PointF, Point> Stellvertretung (Converter(Of PointF, Point)in Visual Basic) erstellt, um die PointFToPoint Methode darzustellen, und übergeben Sie den Stellvertretung an die ConvertAll Methode. Die ConvertAll Methode übergibt jedes Element der Eingabeliste an die PointFToPoint Methode und fügt die konvertierten Elemente in eine neue Liste der Point Strukturen ein. Beide Listen werden angezeigt.

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

Hinweise

Dieser Stellvertretung wird von der ConvertAll Methode der Array Klasse und ConvertAll der Methode List<T> der Klasse verwendet, um jedes Element der Auflistung von einem Typ in einen anderen zu konvertieren.

Erweiterungsmethoden

GetMethodInfo(Delegate)

Ruft ein Objekt ab, das die Methode darstellt, die vom angegebenen Delegaten dargestellt wird.

Gilt für

Produkt Versionen
.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