一尘不染

何时在Linq中使用Cast()和Oftype()

c#

我知道在Linq中将类型转换为IEnumerablefrom的两种方法,Arraylist并且想知道在哪种情况下使用它们?

例如

IEnumerable<string> someCollection = arrayList.OfType<string>()

要么

IEnumerable<string> someCollection = arrayList.Cast<string>()

这两种方法有什么区别?每种情况应在哪里应用?


阅读 281

收藏
2020-05-19

共1个答案

一尘不染

OfType-仅返回可以安全地转换为x类型的元素。
Cast-将尝试将所有元素转换为类型x。如果其中一些不是这种类型的,您将得到InvalidCastException

编辑
例如:

object[] objs = new object[] { "12345", 12 };
objs.Cast<string>().ToArray(); //throws InvalidCastException
objs.OfType<string>().ToArray(); //return { "12345" }
2020-05-19