Array.ConvertAll<TInput,TOutput> 方法

定义

将一种类型的数组转换为另一种类型的数组。

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()

类型参数

TInput

源数组元素的类型。

TOutput

目标数组元素的类型。

参数

array
TInput[]

要转换为目标类型的从零开始的一维 Array

converter
Converter<TInput,TOutput>

用于将每个元素从一种类型转换为另一种类型的 Converter<TInput,TOutput>

返回

TOutput[]

目标类型的数组,包含从源数组转换而来的元素。

例外

arraynull

  • 或 -

converternull

示例

下面的代码示例定义一PointFToPoint个名为将结构转换为PointFPoint结构的方法。 然后,该示例创建一个结构数组PointF,在Visual Basic) 中创建一个Converter<PointF, Point>委托 (Converter(Of PointF, Point)来表示PointFToPoint该方法,并将委托传递给ConvertAll该方法。 该方法 ConvertAll 将输入列表的每个元素传递给 PointFToPoint 该方法,并将转换后的元素放入结构的新列表中 Point 。 在 F# 示例中,函数 pointFToPoint 隐式转换为 Converter<PointF, Point> 委托。 将显示这两个列表。

#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}

注解

Converter<TInput,TOutput>这是将对象转换为目标类型的方法的委托。 这些元素分别传递给Converter<TInput,TOutput>该元素array,转换后的元素将保存在新数组中。

array 保持不变。

此方法是 O (n) 操作,其位置 nLength array.

在 F# 中,通常会改用 Array.map 函数。

适用于

另请参阅