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) where TInput : allows ref struct where TOutput : allows ref struct;
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
型パラメーター
- TInput
変換するオブジェクトの型。
この型パラメーターは反変です。 つまり、指定した型、または弱い派生型のいずれかを使用することができます。 共変性および反変性の詳細については、「ジェネリックの共変性と反変性」をご覧ください。- TOutput
入力オブジェクトの変換の対象となる型。
この型パラメーターは共変です。 つまり、指定した型、または強い派生型のいずれかを使用することができます。 共変性および反変性の詳細については、「ジェネリックの共変性と反変性」をご覧ください。パラメーター
- input
- TInput
変換するオブジェクト。
戻り値
変換されたTOutputを表すTInput。
例
このセクションには、2 つのコード例が含まれています。 1 つ目は、Converter<TInput,TOutput> クラスのConvertAll メソッドを持つArray デリゲートを示し、2 つ目は、ConvertAll ジェネリック クラスのList<T> メソッドを持つデリゲートを示しています。
例 1
次のコード例では、PointFToPoint構造体を PointF 構造体に変換する Point という名前のメソッドを定義します。 次に、PointF 構造体の配列を作成し、Converter<PointF, Point> メソッドを表す Converter(Of PointF, Point) デリゲート (Visual Basic では 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}
*/
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構造体を PointF 構造体に変換する Point という名前のメソッドを定義します。 次に、この例では、List<T> 構造体のPointFを作成し、Converter<PointF, Point> メソッドを表す Converter<PointF, Point> デリゲート (Visual Basic の 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}
*/
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}
注釈
このデリゲートは、コレクションの各要素を 1 つの型から別の型に変換するために、ConvertAll クラスのArray メソッドとConvertAll クラスのList<T> メソッドによって使用されます。
拡張メソッド
| 名前 | 説明 |
|---|---|
| GetMethodInfo(Delegate) |
指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。 |