如何在C#中使用typeof()确定数组的长度?

时间:2015-03-11 01:15:54

标签: c# arrays

我可以使用typeof()方法('Type'类)来确定数组的长度吗?

我有这样的方法:

public void Foo<T>(T data)
{
    Type t = typeof(T);
    if(t.isArray)
    {
        // determine array length here
        ...
    }
}

您会注意到上述方法的输入没有数组修饰符([])。这是因为输入不必是数组。我已经知道我可以为这个方法编写两个重载但是想知道如何利用'Type'类......

2 个答案:

答案 0 :(得分:2)

请注意System.Array是数组类型的基类:

public void Foo<T>(T data)
{
    Type t = typeof(T);
    if(t.IsArray)
    {
        int length = ((Array)(object)data).Length;
    }
}

答案 1 :(得分:1)

您可以使用dynamic轻松完成此操作。

public void Foo<T>(T data)
{
    Type t = typeof(T);
    if (t.isArray)
    {
        int length = ((dynamic)data).Length;
    }
}