List<T>::ConvertAll<TOutput> Method (Converter<T, TOutput>^)
Converts the elements in the current List<T> to another type, and returns a list containing the converted elements.
Assembly: mscorlib (in mscorlib.dll)
public: generic<typename TOutput> List<TOutput>^ ConvertAll( Converter<T, TOutput>^ converter )
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>.
Type Parameters
- TOutput
The type of the elements of the target array.
| Exception | Condition |
|---|---|
| ArgumentNullException | converter is null. |
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} */
Available since 2.0