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<>);
list が List<> のインスタンスであるが、派生型ではない場合に true を返します。
覚えておいてくださいこれらのチェックにより型の正確な同等性が確立されることを確認します。オブジェクトが派生ジェネリック型 (List
以上がC# でオブジェクトのジェネリック型を正確にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。