6

基本クラス Base と、それを継承するクラス A/B があります。

public class Base
{
    int x;
}
public class A : Base
{
    int y;
}
public class B : Base
{
    int z;
}

次のように、必要なオブジェクトのみをフィルタリングするために OfType を使用しようとしました。

public static void RunSnippet()
{
    Base xbase; A a; B b;
    IEnumerable<Base> list = new List<Base>() {xbase, a, b};
    Base f = list.OfType<A>; // I need to get only the object A
    Console.WriteLine(f);
}

コードをコンパイルすると、次のエラーが発生しました。

エラー CS0428: メソッド グループ 'OfType' を非デリゲート型 'Base' に変換できません。メソッドを呼び出すつもりでしたか?

コードの何が問題になっていますか?

4

2 に答える 2

21

2 つの問題があります。

  • OfType返品IEnumerable<T>不可T
  • それは方法です - あなたは括弧を忘れました

おそらくあなたが望んでいた:

Base f = list.OfType<A>().FirstOrDefault();

?

于 2012-04-15T20:15:32.653 に答える
2

ブラケット ?

これは関数であり、演算子ではありません。

Base f = list.OfType<A>()

参照をチェックしてください:

Enumerable.OfType(Of TResult) メソッド

于 2012-04-15T20:15:27.380 に答える