Converter<TInput,TOutput> 대리자

정의

개체를 한 형식에서 다른 형식으로 변환하는 메서드를 나타냅니다.

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

변환할 개체의 형식입니다.

이 형식 매개 변수는 반공변(Contravariant)입니다. 즉, 지정한 형식이나 더 적게 파생된 모든 형식을 사용할 수 있습니다. 공변성(Covariance) 및 반공변성(Contravariance)에 대한 자세한 내용은 제네릭의 공변성(Covariance) 및 반공변성(Contravariance)을 참조하세요.
TOutput

입력 개체를 변환할 형식입니다.

이 형식 매개 변수는 공변(Covariant)입니다. 즉, 지정한 형식이나 더 많게 파생된 모든 형식을 사용할 수 있습니다. 공변성(Covariance) 및 반공변성(Contravariance)에 대한 자세한 내용은 제네릭의 공변성(Covariance) 및 반공변성(Contravariance)을 참조하세요.

매개 변수

input
TInput

변환할 개체입니다.

반환 값

TOutput

TOutput 변환된 TInput을 나타내는 값입니다.

예제

이 섹션에는 두 가지 코드 예제가 포함되어 있습니다. 첫 Converter<TInput,TOutput> 번째는 클래스의 ConvertAll 메서드를 Array 사용하여 대리자를 보여 줍니다. 두 번째는 제네릭 클래스의 메서드를 사용하여 ConvertAll 대리자를 List<T> 보여 줍니다.

예제 1

다음 코드 예제에서는 구조체를 구조체로 변환하는 메서드 PointFToPointPointFPoint 정의합니다. 그런 다음, 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}
 */
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

다음 코드 예제에서는 구조체를 구조체로 변환하는 메서드 PointFToPointPointFPoint 정의합니다. 그런 다음, List<T> 구조체의 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()
    {
        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}

설명

이 대리자는 클래스의 ConvertAll 메서드와 Array 클래스의 메서드를 사용하여 ConvertAll 컬렉션의 List<T> 각 요소를 한 형식에서 다른 형식으로 변환합니다.

확장명 메서드

Name Description
GetMethodInfo(Delegate)

지정된 대리자가 나타내는 메서드를 나타내는 개체를 가져옵니다.

적용 대상