Export (0) Print
Expand All

List<T>::ConvertAll<TOutput> Method

Converts the elements in the current List<T> to another type, and returns a list containing the converted elements.

Namespace:  System.Collections.Generic
Assembly:  mscorlib (in mscorlib.dll)

public:
generic<typename TOutput>
List<TOutput>^ ConvertAll(
	Converter<T, TOutput>^ converter
)

Type Parameters

TOutput

The type of the elements of the target array.

Parameters

converter
Type: System::Converter<T, TOutput>

A Converter<TInput, TOutput> delegate that converts each element from one type to another type.

Return Value

Type: System.Collections.Generic::List<TOutput>
A List<T> of the target type containing the converted elements from the current List<T>.

ExceptionCondition
ArgumentNullException

converter is nullptr.

The Converter<TInput, TOutput> is a delegate to a method that converts an object to the target type. The elements of the current List<T> are individually passed to the Converter<TInput, TOutput> delegate, and the converted elements are saved in the new List<T>.

The current List<T> remains unchanged.

This method is an O(n) operation, where n is Count.

The following example defines a method named PointFToPoint that converts a PointF structure to a Point structure. The example then creates a List<T> of PointF structures, creates a Converter<PointF, Point> delegate (Converter(Of PointF, Point) in Visual Basic) to represent the PointFToPoint method, and passes the delegate to the ConvertAll<TOutput> method. The ConvertAll<TOutput> method passes each element of the input list to the PointFToPoint method and puts the converted elements into a new list of Point structures. Both lists are displayed.

#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}
 */

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0
Show:
© 2015 Microsoft