リストからキャストするためのより短い構文 リストに追加 ? 質問する

リストからキャストするためのより短い構文 リストに追加 ? 質問する

次のように、アイテムのリストを 1 つの型から別の型にキャストすることが可能であることがわかっています (オブジェクトにキャストを実行するための public static 明示的演算子メソッドがある場合)。

List<Y> ListOfY = new List<Y>();

foreach(X x in ListOfX)
    ListOfY.Add((Y)x);

しかし、リスト全体を一度にキャストすることはできないのでしょうか? たとえば、

ListOfY = (List<Y>)ListOfX;

ベストアンサー1

X本当にキャストできるならY使えるはずだ

List<Y> listOfY = listOfX.Cast<Y>().ToList();

いくつか注意すべき点があります (コメント投稿者に感謝します!)

  • using System.Linq;この拡張メソッドを取得するには含める必要があります
  • これはリスト自体ではなく、リスト内の各項目をキャストします。List<Y>の呼び出しによって新しい が作成されますToList()
  • このメソッドはカスタム変換演算子をサポートしていません。(Linq Cast<> ヘルパーが暗黙的なキャスト演算子で動作しないのはなぜですか?
  • このメソッドは、明示的な演算子メソッドを持つオブジェクトでは機能しません (フレームワーク 4.0)

おすすめ記事