请单击以进行评分并提供反馈
MSDN
MSDN Library
.NET 开发
先前版本
System
 Converter 泛型委托

  开启低带宽视图
此页面仅适用于
Microsoft Visual Studio 2005/.Net Framework 2.0

同时提供下列产品的其他版本:
.NET Framework 类库
Converter 泛型委托

注意:此委托在 .NET Framework 2.0 版中是新增的。

表示将对象从一种类型转换为另一种类型的方法。

命名空间:System
程序集:mscorlib(在 mscorlib.dll 中)

Visual Basic(声明)
Public Delegate Function Converter(Of TInput, TOutput) ( _
    input As TInput _
) As TOutput
Visual Basic(用法)
Dim instance As New Converter(Of TInput, TOutput)(AddressOf HandlerMethod)
C#
public delegate TOutput Converter<TInput,TOutput> (
    TInput input
)
C++
generic<typename TInput, typename TOutput>
public delegate TOutput Converter (
    TInput input
)
J#
J# 支持使用泛型类型和方法,但不支持进行新的声明。
JScript
JScript 支持泛型类型和方法。

类型参数

TInput

要转换的对象的类型。

TOutput

要将输入对象转换到的类型。

参数

input

要转换的对象。

返回值

TOutput,它表示已转换的 TInput

此委托由 Array 类的 ConvertAll 方法和 List 类的 ConvertAll 方法使用,将集合中的每个元素从一种类型转换为另一种类型。

本节包含两个代码示例。第一个示例演示 Converter 委托和 Array 类的 ConvertAll 方法;第二个示例演示该委托和 List 泛型类的 ConvertAll 方法。

示例 1

下面的代码示例定义一个名为 PointFToPoint 的方法,该方法可将 PointF 结构转换为 Point 结构。然后,该示例创建一个 PointF 结构的数组和一个 Converter<PointF, Point> 委托(在 Visual Basic 中为 Converter(Of PointF, Point))来表示 PointFToPoint 方法,并将该委托传递给 ConvertAll 方法。ConvertAll 方法将输入列表中的每个元素传递给 PointFToPoint 方法,并将转换后的元素置于 Point 结构的新列表中。这两个列表都会显示。

Visual Basic
Imports System
Imports System.Drawing
Imports System.Collections.Generic

Public Class Example

    Public Shared Sub Main()

        Dim apf() As PointF = { _
            New PointF(27.8, 32.62), _
            New PointF(99.3, 147.273), _
            New PointF(7.5, 1412.2)  }

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

        Dim ap() As Point = Array.ConvertAll(apf, _
            New Converter(Of PointF, Point)(AddressOf PointFToPoint))

        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

' 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}
C#
using System;
using System.Drawing;
using System.Collections.Generic;

public class Example
{
    public static void Main()
    {
        PointF[] apf = {
            new PointF(27.8F, 32.62F),
            new PointF(99.3F, 147.273F),
            new PointF(7.5F, 1412.2F) };

        Console.WriteLine();
        foreach( PointF p in apf )
        {
            Console.WriteLine(p);
        }

        Point[] ap = Array.ConvertAll(apf, 
            new Converter<PointF, Point>(PointFToPoint));

        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 结构。然后,该示例创建 PointF 结构的 List,创建一个 Converter<PointF, Point> 委托(在 Visual Basic 中为 Converter(Of PointF, Point))以表示 PointFToPoint 方法,并将该委托传递给 ConvertAll 方法。ConvertAll 方法将输入列表的各个元素传递给 PointFToPoint 方法,并将转换后的元素置于 Point 结构的新列表中。这两个列表都会显示。

Visual Basic
Imports System
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}
C#
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}
 */
C++
#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}
 */

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

.NET Framework

受以下版本支持:2.0

.NET Compact Framework

受以下版本支持:2.0
社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker