Gerade falls Sie verwenden .NET 2.0 und haben keinen Zugriff auf LINQ:
static T First<T>(IEnumerable<T> items)
{
using(IEnumerator<T> iter = items.GetEnumerator())
{
iter.MoveNext();
return iter.Current;
}
}
Diese sollte tun, was Sie suchen ... es verwendet Generika, damit Sie das erste Element auf einem beliebigen Typ IEnumerable erhalten.
Nennen Sie es, wie so:
List<string> items = new List<string>() { "A", "B", "C", "D", "E" };
string firstItem = First<string>(items);
Oder
int[] items = new int[] { 1, 2, 3, 4, 5 };
int firstItem = First<int>(items);
Sie könnten ändern es leicht genug, um .NET 3.5 ist IEnumerable zu imitieren.ElementAt() Erweiterungsmethode:
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;
}
}
es wie so aufrufen:
int[] items = { 1, 2, 3, 4, 5 };
int elemIdx = 3;
int item = ElementAt<int>(items, elemIdx);
Natürlich, wenn Sie zu tun haben Zugriff auf LINQ, dann gibt es viele gute Antworten bereits gebucht ...
Sie sollten 'using' enumer - aber anders als die, gute ;-p –
Dank Marc - bearbeitet. =) –
Es lohnt sich darauf hinzuweisen, dass SingleOrDefault zurückkommt. 1) Das einzige Element, wenn nur ein Element vorhanden ist. 2) null, wenn keine Gegenstände vorhanden sind. 3) Wirf eine Ausnahme, wenn es mehr als einen Gegenstand gibt. –