ホームページ > バックエンド開発 > C++ > C# でオブジェクトのジェネリック型を正確にテストするにはどうすればよいですか?

C# でオブジェクトのジェネリック型を正確にテストするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-06 15:50:43
オリジナル
178 人が閲覧しました

How Can I Accurately Test the Generic Type of an Object in C#?

C# でのオブジェクトのジェネリック型のテスト

C# では、オブジェクトのジェネリック型を検証して適切であることを確認することが不可欠です。コード内の処理と互換性。一般的なアプローチの 1 つは、GetType() メソッドを利用してオブジェクトの型を取得し、それを既知のジェネリック型定義と比較することです。ただし、このアプローチでは、ジェネリック型を決定しようとするときにエラーが発生する可能性があります。

型の等価性に関する問題

提供されるコード:

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}
ログイン後にコピー

は論理的に見えるかもしれませんが、== 演算子は型を比較す​​るため、常に false を返します。同等。ジェネリック型 List<> は、整数だけでなく任意の型を格納できるジェネリック リストを表します。したがって、list の型は List<> よりも具体的となり、不等比較が行われます。

ジェネリック型をテストするためのソリューション

オブジェクトがジェネリック型かどうかを正確にテストするには、次のコマンドを使用します。アプローチ:

ジェネリック インスタンスの確認:

オブジェクトがジェネリック型のインスタンスであるかどうかを判断するには、IsGenericType プロパティを使用します。

return list.GetType().IsGenericType;
ログイン後にコピー

これは、list が次の場合に true を返します。任意のジェネリック クラスのインスタンス。

特定のジェネリック タイプを確認します:

オブジェクトが特定のジェネリック リスト (List<>)、GetGenericTypeDefinition() を使用します。

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
ログイン後にコピー
これは、

listList<> のインスタンスであるが、派生型ではない場合に true を返します。

覚えておいてくださいこれらのチェックにより型の正確な同等性が確立されることを確認します。オブジェクトが派生ジェネリック型 (

List など) のインスタンスである場合、そのオブジェクトはジェネリック型定義 (List<>) と一致しません。

以上がC# でオブジェクトのジェネリック型を正確にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート