这就是我所拥有的
int[] x = new int[10];
Type type = x.GetType();
if (type.IsArray)
{
Type typeOfElement = type.GetElementType();
int length = 0; // how do I get array's length????
}
有没有办法使用Type确定数组的长度?
答案 0 :(得分:1)
使用Array.Length:
int[] x = new int[10];
Type type = x.GetType();
if (type.IsArray)
{
int length = (x as Array).Length;
}
编辑:刚刚意识到您询问的是从类型中获取长度而不是从实例中获取长度。你不能这样做,因为你的类型永远是一个数组,它们的大小无关紧要:
int[] arr1 = new int[10];
int[] arr2 = new int[11];
bool areEqual = arr1.GetType() == arr2.GetType(); // true
答案 1 :(得分:1)
没有关于阵列大小的类型信息。它只是一个数组,仅此而已。
因此获得大小的唯一方法是返回实例。 那里,只有那里,你可以找到数组的大小。
您可以通过使用反射查询Length
属性来实现此目的。
答案 2 :(得分:0)
使用反射,你无法获得数组的长度。您可以访问该对象的属性,了解该对象(类)提供的类型和方法。 但是你不能通过知道它的类型来重新创建或知道数组的长度。
答案 3 :(得分:0)
不同长度的数组将具有相同的类型,例如new int[10]
和new int[11]
具有相同的(运行时)类型。
这意味着您无法仅从System.Type
重建长度;你需要对实际数组实例的引用。