将C#Type转换为类型数组的类型

时间:2016-06-27 11:56:55

标签: c# arrays types

我需要Type变量中给出的n个元素的数组类型。 我正在解决这个问题:

Type foo;
int n;

Type newType=(Array.CreateInstance(foo,n)).GetType();

这有效,但它确实意味着我实际上是在创建一个未使用的数组,只是为了得到它的类型。我相信一定有更好的方法!

1 个答案:

答案 0 :(得分:5)

您可以使用Type.MakeArrayType()

Type foo = typeof(Foo);
Type arrayType = foo.MakeArrayType();

这将返回Type的一维数组的Foo。数组的length与类型无关。

对于多维数组,您可以使用this overload

Type foo = typeof(Foo);
int dimensions = 5;
Type arrayType = foo.MakeArrayType(dimensions);