Converter<TInput,TOutput> Delegate

Namespace:System
Assembly:System.Runtime.dll

表示将对象从一种类型转换为另一种类型的方法。

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

类型参数

TInput

要转换的对象的类型。

此类型参数是互变的。 也就是说,您可以使用指定的类型,也可以使用衍生性较小的任何类型。 有关协方差和协方差的更多信息,请参见泛型中的协方差和协方差。

TOutput

要将输入对象转换到的类型。

此类型参数是协变的。 也就是说,您可以使用指定的类型,也可以使用更多派生的类型。 有关协方差和协方差的更多信息,请参见泛型中的协方差和协方差。

参数

input TInput

要转换的对象。

返回值

TOutput

TOutput,它表示已转换的 TInput

继承 ObjectDelegateConverter

示例

本部分包含两个代码示例。 第一个示例演示了 Converter 委托与 Array 类的 ConvertAll 方法,第二个示例演示了具有 List 泛型类的 ConvertAll 方法的委托。

示例 1

下面的代码示例定义了一个名为 PointFToPoint 的方法,该方法将 PointF 结构转换为 Point 结构。 然后,该示例创建一个 PointF 结构的数组,创建一个 Converter 委托(在 Visual Basic 中为Converter(Of PointF, Point))以表示 PointFToPoint 方法,并将该委托传递给 ConvertAll 方法。 ConvertAll 方法将输入列表的每个元素传递到 PointFToPoint 方法,并将转换后的元素放入 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}
 */

示例 2

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

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 类的 ConvertAll 方法用于将集合中的每个元素从一种类型转换为另一种类型。

你可能感兴趣的:(MSDN官方文档,文章)