List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) Methode

Definition

Konvertiert die Elemente im Aktuellen List<T> in einen anderen Typ und gibt eine Liste zurück, die die konvertierten Elemente enthält.

public:
generic <typename TOutput>
 System::Collections::Generic::List<TOutput> ^ ConvertAll(Converter<T, TOutput> ^ converter);
public System.Collections.Generic.List<TOutput> ConvertAll<TOutput>(Converter<T,TOutput> converter);
member this.ConvertAll : Converter<'T, 'Output> -> System.Collections.Generic.List<'Output>
Public Function ConvertAll(Of TOutput) (converter As Converter(Of T, TOutput)) As List(Of TOutput)

Typparameter

TOutput

Der Typ der Elemente des Zielarrays.

Parameter

converter
Converter<T,TOutput>

Eine Converter<TInput,TOutput> Stellvertretung, die jedes Element von einem Typ in einen anderen Typ konvertiert.

Gibt zurück

List<TOutput>

Ein List<T> Zieltyp, der die konvertierten Elemente aus dem aktuellen List<T>Enthält.

Ausnahmen

converter ist null.

Beispiele

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

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

Hinweise

Dies ist ein Delegat Converter<TInput,TOutput> an eine Methode, die ein Objekt in den Zieltyp konvertiert. Die Elemente des Aktuellen List<T> werden einzeln an den Converter<TInput,TOutput> Delegaten übergeben, und die konvertierten Elemente werden im neuen List<T>gespeichert.

Der Aktuelle List<T> bleibt unverändert.

Diese Methode ist ein O(n)-Vorgang, wobei n ist Count.

Gilt für:

Weitere Informationen