Namespace:System
Assembly:System.Runtime.dll
表示将对象从一种类型转换为另一种类型的方法。
public delegate TOutput Converter<in TInput,out TOutput>(TInput input);
类型参数
TInput
要转换的对象的类型。
此类型参数是互变的。 也就是说,您可以使用指定的类型,也可以使用衍生性较小的任何类型。 有关协方差和协方差的更多信息,请参见泛型中的协方差和协方差。
TOutput
要将输入对象转换到的类型。
此类型参数是协变的。 也就是说,您可以使用指定的类型,也可以使用更多派生的类型。 有关协方差和协方差的更多信息,请参见泛型中的协方差和协方差。
参数
input
TInput
要转换的对象。
返回值
TOutput
TOutput
,它表示已转换的 TInput
。
继承 Object
→ Delegate
→ Converter<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
方法用于将集合中的每个元素从一种类型转换为另一种类型。