# Converter<TInput,TOutput> 委托

## 定义

``````generic <typename TInput, typename TOutput>
public delegate TOutput Converter(TInput input);``````
``public delegate TOutput Converter<in TInput,out TOutput>(TInput input);``
``type Converter<'Input, 'Output> = delegate of 'Input -> 'Output``
``Public Delegate Function Converter(Of In TInput, Out TOutput)(input As TInput) As TOutput ``

TInput

TOutput

input

#### 返回值

TOutput

`TOutput`，它表示已转换的 `TInput`The `TOutput` that represents the converted `TInput`.

Converter<TInput,TOutput>

## 示例

``````#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections::Generic;

Point PointFToPoint(PointF pf)
{
return Point((int) pf.X, (int) pf.Y);
};

void main()
{
// Create an array of PointF objects.
array<PointF>^ apf = {
PointF(27.8F, 32.62F),
PointF(99.3F, 147.273F),
PointF(7.5F, 1412.2F) };

// Display each element in the PointF array.
Console::WriteLine();
for each(PointF p in apf)
{
Console::WriteLine(p);
}

// Convert each PointF element to a Point object.
array<Point>^ ap =
Array::ConvertAll(apf,
gcnew Converter<PointF, Point>(PointFToPoint)
);

// Display each element in the Point array.
Console::WriteLine();
for each(Point p in ap)
{
Console::WriteLine(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}
*/
``````
``````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}
*/
``````
``````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, _

' 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}
``````

``````#using <System.Drawing.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Collections::Generic;

Point PointFToPoint(PointF pf)
{
return Point((int) pf.X, (int) pf.Y);
};

void main()
{
List<PointF>^ lpf = gcnew List<PointF>();

Console::WriteLine();
for each(PointF p in lpf)
{
Console::WriteLine(p);
}

List<Point>^ lp =
lpf->ConvertAll<Point>(
gcnew Converter<PointF, Point>(PointFToPoint)
);

Console::WriteLine();
for each(Point p in lp)
{
Console::WriteLine(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}
*/
``````
``````using System;
using System.Drawing;
using System.Collections.Generic;

public class Example
{
public static void Main()
{
List<PointF> lpf = new List<PointF>();

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}
*/
``````
``````Imports System.Drawing
Imports System.Collections.Generic

Public Class Example

Public Shared Sub Main()

Dim lpf As New List(Of PointF)

Console.WriteLine()
For Each p As PointF In lpf
Console.WriteLine(p)
Next

Dim lp As List(Of Point) = lpf.ConvertAll( _

Console.WriteLine()
For Each p As Point In lp
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

' 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=28,Y=33}
'{X=99,Y=147}
'{X=8,Y=1412}
``````

## 扩展方法

 获取指示指定委托表示的方法的对象。Gets an object that represents the method represented by the specified delegate.