我可以使用typeof()方法('Type'类)来确定数组的长度吗?
我有这样的方法:
public void Foo<T>(T data)
{
Type t = typeof(T);
if(t.isArray)
{
// determine array length here
...
}
}
您会注意到上述方法的输入没有数组修饰符([])。这是因为输入不必是数组。我已经知道我可以为这个方法编写两个重载但是想知道如何利用'Type'类......
答案 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;
}
}