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<TInput,TOutput>

示例

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

示例 1

下面的代码示例定义了一个名为 PointFToPoint 的方法,该方法将 PointF 结构转换为 Point 结构。 然后,该示例创建一个 PointF 结构的数组,创建一个 Converter<PointF, Point> 委托(在 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 结构。 然后,该示例创建一个 List<T>PointF 结构,在 Visual Basic 中创建一个 Converter<PointF, Point> 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<T> 类的 ConvertAll 方法用于将集合中的每个元素从一种类型转换为另一种类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值