1. ホーム
  2. c#

オブジェクトが特定の型の配列であるかどうかを確認する方法は?

2023-09-18 22:38:20

質問

これは問題なく動作します。

var expectedType = typeof(string);
object value = "...";
if (value.GetType().IsAssignableFrom(expectedType))
{
     ...
}

を設定せずに、値が文字列配列であるかどうかを確認するにはどうすればよいでしょうか。 expectedTypetypeof(string[]) ? みたいなことをしたいのですが。

var expectedType = typeof(string);
object value = new[] {"...", "---"};
if (value.GetType().IsArrayOf(expectedType)) // <---
{
     ...
}

これは可能か?

どのように解決するのですか?

使用方法 タイプ.IsArray タイプ.GetElementType() で、配列の要素型を確認します。

Type valueType = value.GetType();
if (valueType.IsArray && expectedType.IsAssignableFrom(valueType.GetElementType())
{
 ...
}

注意すべきは タイプ.IsAssignableFrom() . もし、型が完全に一致するかどうかをチェックしたいのであれば、等しいかどうかをチェックする必要があります ( typeA == typeB ). もし、与えられた型が型そのものかサブクラス(またはインターフェイス)であるかを チェックしたいのであれば Type.IsAssignableFrom() :

typeof(BaseClass).IsAssignableFrom(typeof(ExpectedSubclass))