7

可能重复:
如何从 .net 中的数组类型获取数组项类型

如果我有一个特定类型的数组,有没有办法知道该类型到底是什么?

 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
4

2 回答 2

12

Type.GetElementType- 在派生类中重写时,返回当前数组、指针或引用类型包含或引用的对象的类型。

var arr = new []{ "string1", "string2" };
Type type = array.GetType().GetElementType(); 
于 2012-07-05T15:02:29.467 回答
1

由于您的类型在编译时已知,因此您只需以 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

于 2012-07-05T15:07:14.470 回答