C# 如何获取IEnumerable(非泛型)的第一个元素?
如果我有一个通用的C# 如何获取IEnumerable(非泛型)的第一个元素?,c#,C#,如果我有一个通用的IEnumerable。我可以简单地对它应用ToList()或ToArray()或FirstOrDefault()。如何将这些方法应用于非泛型的IEnumerable?您有两个选项: 如果知道枚举表中的所有对象都是同一类型的,则可以将其强制转换为泛型IEnumerable。在最坏的情况下,您可以始终使用对象: object first = enumerable.Cast<object>().First(); 这里有两个选项: 遵循@Danier Gimenez建
IEnumerable
。我可以简单地对它应用ToList()
或ToArray()
或FirstOrDefault()
。如何将这些方法应用于非泛型的IEnumerable
?您有两个选项:
IEnumerable
。在最坏的情况下,您可以始终使用对象
:
object first = enumerable.Cast<object>().First();
这里有两个选项:
Cast
方法。在强制转换之后,您将获得一个通用枚举,您可以对其应用First()
方法。这也是最简单的实现GetEnumerator()
方法,该方法提供一个IEnumerator
。从这里,您可以迭代集合。从MoveNext()
开始,可以使用Current
属性获取第一个元素它可以过滤(int/MyClass)类型对象,并将其转换为列表或数组附加代码,以便更好地帮助您。AFAIK
IEnumerable
不是generic@wudzikIEnumerable是IEnumerable接口的实现,该接口位于System.Collections的泛型命名空间中,因此它是泛型的。
IEnumerator enumerator = enumerable.GetEnumerator();
enumerator.MoveNext();
object first = enumerator.Current;