C# でオブジェクトがジェネリック型かどうかをテストする 質問する

C# でオブジェクトがジェネリック型かどうかをテストする 質問する

オブジェクトがジェネリック型であるかどうかを確認するテストを実行したいと思います。次のことを試しましたが、成功しませんでした。

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}

何が間違っているのでしょうか、またこのテストをどのように実行すればよいのでしょうか?

ベストアンサー1

ジェネリック型のインスタンスであるかどうかを確認したい場合:

return list.GetType().IsGenericType;

ジェネリックかどうか確認したい場合List<T>:

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);

Jon が指摘しているように、これは正確な型の等価性をチェックします。戻ることはfalse必ずしもlist is List<T>戻ることを意味するわけではありませんfalse(つまり、オブジェクトをList<T>変数に割り当てることはできません)。

おすすめ記事