特定の型の配列がある場合、その型が正確に何であるかを知る方法はありますか?
var arr = new []{ "string1", "string2" };
var t = arr.GetType();
t.IsArray //Evaluates to true
//How do I determine it's an array of strings?
t.ArrayType == typeof(string) //obviously doesn't work
特定の型の配列がある場合、その型が正確に何であるかを知る方法はありますか?
var arr = new []{ "string1", "string2" };
var t = arr.GetType();
t.IsArray //Evaluates to true
//How do I determine it's an array of strings?
t.ArrayType == typeof(string) //obviously doesn't work
Type.GetElementType
- 派生クラスでオーバーライドされると、現在の配列、ポインター、または参照型によって包含または参照されるオブジェクトの Type を返します。
var arr = new []{ "string1", "string2" };
Type type = array.GetType().GetElementType();
タイプはコンパイル時に認識されるため、C++ の方法でチェックインできます。このような:
using System;
public class Test
{
public static void Main()
{
var a = new[] { "s" };
var b = new[] { 1 };
Console.WriteLine(IsStringArray(a));
Console.WriteLine(IsStringArray(b));
}
static bool IsStringArray<T>(T[] t)
{
return typeof(T) == typeof(string);
}
}
( 、 をTrue
生成False
)