Sdílet prostřednictvím


Array.ConvertAll<TInput,TOutput> Metoda

Definice

Převede pole jednoho typu na pole jiného typu.

public:
generic <typename TInput, typename TOutput>
 static cli::array <TOutput> ^ ConvertAll(cli::array <TInput> ^ array, Converter<TInput, TOutput> ^ converter);
public static TOutput[] ConvertAll<TInput,TOutput> (TInput[] array, Converter<TInput,TOutput> converter);
static member ConvertAll : 'Input[] * Converter<'Input, 'Output> -> 'Output[]
Public Shared Function ConvertAll(Of TInput, TOutput) (array As TInput(), converter As Converter(Of TInput, TOutput)) As TOutput()

Parametry typu

TInput

Typ prvků zdrojového pole.

TOutput

Typ prvků cílového pole.

Parametry

array
TInput[]

Jednorozměrný nula, Array který se má převést na cílový typ.

converter
Converter<TInput,TOutput>

A Converter<TInput,TOutput> , který převede každý prvek z jednoho typu na jiný typ.

Návraty

TOutput[]

Pole cílového typu obsahující převedené prvky ze zdrojového pole.

Výjimky

array je null.

-nebo-

converter je null.

Příklady

Následující příklad kódu definuje metodu s názvem PointFToPoint , která převede PointF strukturu na Point strukturu. Příklad pak vytvoří pole PointF struktur, vytvoří Converter<PointF, Point> delegáta (Converter(Of PointF, Point)v Visual Basic) představující metodu PointFToPoint a předá delegáta ConvertAll metodě. Metoda ConvertAll předá každý prvek vstupního seznamu PointFToPoint metodě a umístí převedené elementy do nového seznamu Point struktur. V příkladu pointFToPoint jazyka F# se funkce implicitně přetypuje na delegáta Converter<PointF, Point> . Zobrazí se oba seznamy.

#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections::Generic;

Point PointFToPoint(PointF pf)
{
    return Point((int) pf.X, (int) pf.Y);
};

void main()
{
    // Create an array of PointF objects.
    array<PointF>^ apf = {
        PointF(27.8F, 32.62F),
        PointF(99.3F, 147.273F),
        PointF(7.5F, 1412.2F) };


    // Display each element in the PointF array.
    Console::WriteLine();
    for each(PointF p in apf)
    {
        Console::WriteLine(p);
    }

    // Convert each PointF element to a Point object.
    array<Point>^ ap = 
        Array::ConvertAll(apf, 
            gcnew Converter<PointF, Point>(PointFToPoint)
        );

    // Display each element in the Point array.
    Console::WriteLine();
    for each(Point p in ap)
    {
        Console::WriteLine(p);
    }
}

/* 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}
 */
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}
 */
open System
open System.Drawing
open System.Collections.Generic

let pointFToPoint (pf: PointF) =
    Point(int pf.X, int pf.Y)

// Create an array of PointF objects.
let apf =
    [| PointF(27.8f, 32.62f)
       PointF(99.3f, 147.273f)
       PointF(7.5f, 1412.2f) |]

// Display each element in the PointF array.
printfn ""
for p in apf do
    printfn $"{p}"

// Convert each PointF element to a Point object.
let ap = Array.ConvertAll(apf, pointFToPoint)
// let ap = Array.map pointFToPoint apf

// Display each element in the Point array.
printfn ""
for p in ap do
    printfn $"{p}"

// 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()
        ' Create an array of PointF objects.
        Dim apf() As PointF = { _
            New PointF(27.8, 32.62), _
            New PointF(99.3, 147.273), _
            New PointF(7.5, 1412.2)  }

        ' Display each element in the PointF array.
        Console.WriteLine()
        For Each p As PointF In apf
            Console.WriteLine(p)
        Next
        
        ' Convert each PointF element to a Point object.
        Dim ap() As Point = Array.ConvertAll(apf, _
            New Converter(Of PointF, Point)(AddressOf PointFToPoint))

        ' Display each element in the Point array.
        Console.WriteLine()
        For Each p As Point In ap
            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
' The 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}

Poznámky

Jedná se Converter<TInput,TOutput> o delegáta na metodu, která převádí objekt na cílový typ. Prvky array jsou jednotlivě předány Converter<TInput,TOutput>do , a převedené prvky jsou uloženy v novém poli.

Zdroj array zůstane beze změny.

Tato metoda je operace O(n), kde n je Length .array

V jazyce F# se obecně používá funkce Array.map .

Platí pro

Viz také