1. ホーム
  2. c#

[解決済み】LinqでCast()とOftype()を使用するタイミングについて

2022-04-03 08:38:35

質問

に型をキャストする方法として、2つの方法を知っています。 IEnumerable から Arraylist をLinqで使用したいのですが、どのようなケースで使用すればよいのでしょうか?

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

または

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

この2つの方法の違いと、それぞれのケースをどこに適用すればいいのでしょうか?

どのように解決するのですか?

OfType - は、x 型に安全にキャストできる要素のみを返します。

Cast - は、すべての要素を x 型にキャストしようとします。 InvalidCastException

EDIT

を例にとると

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