Converter<TInput,TOutput> 代理人
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示將物件從某個型別轉換成另一個型別的方法。
generic <typename TInput, typename TOutput>
public delegate TOutput Converter(TInput input);
public delegate TOutput Converter<in TInput,out TOutput>(TInput input);
public delegate TOutput Converter<TInput,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
Public Delegate Function Converter(Of TInput, TOutput)(input As TInput) As TOutput
類型參數
參數
- input
- TInput
要轉換的物件。
傳回值
TOutput
,表示轉換的 TInput
。
範例
本節包含兩個程式碼範例。 第一個會使用 類別的 方法來示範 Converter<TInput,TOutput> 委派 ConvertAll ,而第二個則會使用泛型類別的 List<T> 方法來示範委派 ConvertAll 。 Array
範例 1
下列程式碼範例會定義名為 PointFToPoint
的方法,將結構 Point 轉換成 PointF 結構。 此範例接著會建立 結構的陣列 PointF 、在 Visual Basic 中建立 Converter<PointF, Point>
委派 (Converter(Of PointF, Point)
) 來表示 PointFToPoint
方法,並將委派傳遞至 ConvertAll 方法。 方法 ConvertAll 會將輸入清單的每個專案傳遞至 PointFToPoint
方法,並將已轉換的專案放入新的結構清單 Point 。 這兩個清單都會顯示。
#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, _
New Converter(Of PointF, Point)(AddressOf PointFToPoint))
' 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}
範例 2
下列程式碼範例會定義名為 PointFToPoint
的方法,將結構 Point 轉換成 PointF 結構。 然後,此範例會 List<T> 建立 結構的 PointF 、在 Visual Basic) 中建立 Converter\<PointF, Point>
委派 (Converter(Of PointF, Point)
來表示 PointFToPoint
方法,並將委派傳遞至 ConvertAll 方法。 方法 ConvertAll 會將輸入清單的每個專案傳遞至 PointFToPoint
方法,並將已轉換的專案放入新的結構清單 Point 。 這兩個清單都會顯示。
#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>();
lpf->Add(PointF(27.8F, 32.62F));
lpf->Add(PointF(99.3F, 147.273F));
lpf->Add(PointF(7.5F, 1412.2F));
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>();
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}
*/
Imports System.Drawing
Imports System.Collections.Generic
Public Class Example
Public Shared Sub Main()
Dim lpf As New List(Of PointF)
lpf.Add(New PointF(27.8, 32.62))
lpf.Add(New PointF(99.3, 147.273))
lpf.Add(New PointF(7.5, 1412.2))
Console.WriteLine()
For Each p As PointF In lpf
Console.WriteLine(p)
Next
Dim lp As List(Of Point) = lpf.ConvertAll( _
New Converter(Of PointF, Point)(AddressOf PointFToPoint))
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}
備註
類別的 Array 方法和 ConvertAll 類別的 List<T> 方法會使用此 ConvertAll 委派,將集合的每個專案從一個型別轉換成另一個型別。
擴充方法
GetMethodInfo(Delegate) |
取得表示特定委派所代表之方法的物件。 |