閱讀英文

共用方式為


Converter<TInput,TOutput> 代理人

定義

表示將物件從某個型別轉換成另一個型別的方法。

C#
public delegate TOutput Converter<in TInput,out TOutput>(TInput input);
C#
public delegate TOutput Converter<TInput,TOutput>(TInput input);

類型參數

TInput

要轉換的成員型別。

這是反變數的型別參數。 也就是說,您可以使用您指定的類型,或衍生程度較低的任何類型。 如需共變數與反變數的詳細資訊,請參閱泛型中的共變數與反變數
TOutput

輸入物件要轉換成的型別。

這是共變數的型別參數。 也就是說,您可以使用您指定的類型,或衍生程度較高的任何類型。 如需共變數與反變數的詳細資訊,請參閱泛型中的共變數與反變數

參數

input
TInput

要轉換的物件。

傳回值

TOutput

TOutput,表示轉換的 TInput

範例

本節包含兩個程式碼範例。 第一個會使用 類別的 方法來示範 Converter<TInput,TOutput> 委派 ConvertAll ,而第二個則會使用泛型類別的 List<T> 方法來示範委派 ConvertAllArray

範例 1

下列程式碼範例會定義名為 PointFToPoint 的方法,將結構 Point 轉換成 PointF 結構。 此範例接著會建立 結構的陣列 PointF 、在 Visual Basic 中建立 Converter<PointF, Point> 委派 (Converter(Of PointF, Point)) 來表示 PointFToPoint 方法,並將委派傳遞至 ConvertAll 方法。 方法 ConvertAll 會將輸入清單的每個專案傳遞至 PointFToPoint 方法,並將已轉換的專案放入新的結構清單 Point 。 這兩個清單都會顯示。

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

範例 2

下列程式碼範例會定義名為 PointFToPoint 的方法,將結構 Point 轉換成 PointF 結構。 然後,此範例會 List<T> 建立 結構的 PointF 、在 Visual Basic) 中建立 Converter\<PointF, Point> 委派 (Converter(Of PointF, Point) 來表示 PointFToPoint 方法,並將委派傳遞至 ConvertAll 方法。 方法 ConvertAll 會將輸入清單的每個專案傳遞至 PointFToPoint 方法,並將已轉換的專案放入新的結構清單 Point 。 這兩個清單都會顯示。

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

備註

類別的 Array 方法和 ConvertAll 類別的 List<T> 方法會使用此 ConvertAll 委派,將集合的每個專案從一個型別轉換成另一個型別。

擴充方法

GetMethodInfo(Delegate)

取得表示特定委派所代表之方法的物件。

適用於

產品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1