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> A 將每個元素從一種類型轉換成另一種類型。

傳回

TOutput[]

目標型態的陣列,包含來源陣列中轉換後的元素。

例外狀況

arraynull

-或-

converternull

範例

以下程式碼範例定義了一個名為 PointFToPoint S 的方法,該方法將結構 PointF 轉換成結構 Point 。 範例接著建立一個 PointF 結構陣列,建立一個 Converter<PointF, Point> 代理(Converter(Of PointF, Point) 在 Visual Basic 中)來表示 PointFToPoint 方法,並將代理傳送給 ConvertAll 方法。 該 ConvertAll 方法將輸入清單中的每個元素傳給方法, PointFToPoint 並將轉換後的元素放入新的結構清單 Point 中。 在 F# 範例中,函 pointFToPoint 式隱含地鑄造給 Converter<PointF, Point> 代理。 兩個清單都會顯示。

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> 將物件轉換為目標型別的方法代理。 的 array 元素會分別傳遞給 Converter<TInput,TOutput>,轉換後的元素會儲存在新的陣列中。

來源 array 保持不變。

此方法為 O(n) 運算,其中 nLengtharray

在 F# 中,通常會使用 Array.map 函式。

適用於

另請參閱