List<T>.ConvertAll<TOutput>(Converter<T,TOutput>) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Konverterar elementen i den aktuella List<T> till en annan typ och returnerar en lista som innehåller de konverterade elementen.
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)
Typparametrar
- TOutput
Typ av element i målmatrisen.
Parametrar
- converter
- Converter<T,TOutput>
Ett Converter<TInput,TOutput> ombud som konverterar varje element från en typ till en annan typ.
Returer
En List<T> av måltypen som innehåller de konverterade elementen från den aktuella List<T>.
Undantag
converter är null.
Exempel
I följande exempel definieras en metod med namnet PointFToPoint som konverterar en PointF struktur till en Point struktur. I exemplet skapas sedan en List<T> av PointF strukturer, skapar en Converter\<PointF, Point> delegat (Converter(Of PointF, Point) i Visual Basic) som representerar metoden PointFToPoint och skickar ombudet till metoden ConvertAll. Metoden ConvertAll skickar varje element i indatalistan till PointFToPoint metoden och placerar de konverterade elementen i en ny lista över Point strukturer. Båda listorna visas.
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}
Kommentarer
Converter<TInput,TOutput> är ett ombud till en metod som konverterar ett objekt till måltypen. Elementen i den aktuella List<T> skickas individuellt till ombudet Converter<TInput,TOutput> och de konverterade elementen sparas i den nya List<T>.
List<T> Strömmen förblir oförändrad.
Den här metoden är en O(n)-åtgärd, där n är Count.