Au cas où vous utiliseriez .NET 2.0 et n'auriez pas accès à LINQ :
static T First<T>(IEnumerable<T> items)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
iter.MoveNext();
return iter.Current;
}
}
Cela devrait faire ce que vous cherchez... il utilise des génériques pour que vous puissiez obtenir le premier élément de n'importe quel type IEnumerable.
Appelez ça comme ça :
List<string> items = new List<string>() { "A", "B", "C", "D", "E" };
string firstItem = First<string>(items);
Ou
int[] items = new int[] { 1, 2, 3, 4, 5 };
int firstItem = First<int>(items);
Vous pourriez le modifier assez facilement pour imiter la méthode d'extension IEnumerable.ElementAt() de .NET 3.5 :
static T ElementAt<T>(IEnumerable<T> items, int index)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
for (int i = 0; i <= index; i++, iter.MoveNext()) ;
return iter.Current;
}
}
Je l'appelle comme ça :
int[] items = { 1, 2, 3, 4, 5 };
int elemIdx = 3;
int item = ElementAt<int>(items, elemIdx);
Bien sûr, si vous faire ont accès à LINQ, alors il y a beaucoup de bonnes réponses déjà postées...