Eine Extension-Methode, die jedes Objekt vom Typ System.Collections.IEnumerable (Arrays, Listen, etc.) in ein Array umwandelt.
Jedes Objekt dieses Typs wird nun um die untere generische Methode erweitert, sofern diese für das Objekt "sichtbar" ist.
Beispiel:
System.Collections.Generic.List<int> zahlen = new System.Collections.Generic.List<int>();
for (int i = 0; i < 1000; i++)
{
zahlen.Add(i * 2);
}
System.Collections.IEnumerable list = zahlen;
/// Das Objekt 'list' wird nur als 'System.Collections.IEnumerable'-Objekt
/// angesehen, d.h. es gibt KEINE Methode ToArray(), wie in
/// System.Collections.Generic.List<T> definiert!
int[] intArray = list.ToArray<int>();
using System;
using System.Collections;
using System.Collections.Generic;
namespace MarcelJKloubert
{
public static class Tools
{
#region Methoden
/// <summary>
/// Konvertiert eine allgemeine Liste in ein Array aus Objekten
/// </summary>
/// <param name="list">Liste</param>
/// <returns>Liste als Array</returns>
public static object[] ToArray(this IEnumerable list)
{
return ToArray<object>(list);
}
/// <summary>
/// Konvertiert eine allgemeine Liste in ein Array eines bestimmten Typs
/// </summary>
/// <typeparam name="T">Zieltyp des Rückgabearrays</typeparam>
/// <param name="list">Liste</param>
/// <returns>Liste als Array</returns>
public static T[] ToArray<T>(this IEnumerable list)
{
if (list is T[])
{
// muss nicht umgewandelt werden
return (T[])list;
}
// neue Liste erzeugen
List<T> result = new List<T>();
{
foreach (object item in list)
{
result.Add((T)item);
}
}
return result.ToArray();
}
#endregion
}
}
6 Kommentare zum Snippet