C# Type.GetType()在typeName表示大小无效的数组类型时引发

C# Type.GetType()在typeName表示大小无效的数组类型时引发,c#,reflection,C#,Reflection,的文档说明,TypeLoadException在throwOnError为true时抛出,并且: {…}typeName表示大小无效的数组类型 我想知道,这是什么意思,怎么可能? 是与非托管代码相关还是与基于反射的数组操作相关? 当我想按名称获取类型时,是否需要担心这种情况 有人知道这里发生了什么吗?正如Flydog57所提到的 Type.GetType("System.Int32[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]") 将产生异常,因为数组的最大维数为32。这

的文档说明,
TypeLoadException
throwOnError
true
时抛出,并且:

{…}typeName表示大小无效的数组类型

我想知道,这是什么意思,怎么可能? 是与非托管代码相关还是与基于反射的数组操作相关? 当我想按名称获取
类型时,是否需要担心这种情况


有人知道这里发生了什么吗?

正如Flydog57所提到的

Type.GetType("System.Int32[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]")
将产生异常,因为数组的最大维数为32。这与医生说的并不完全一致

typeName表示大小无效的数组类型

但我认为有足够的证据表明这正是我们正在寻找的情况:

  • 它完全生成
    TypeLoadException
    ,不适合任何其他描述的情况
  • 在C#中,唯一听起来像“大小为a的数组类型”的是,但事实并非如此
所以,我很确定文档中有错误,正确的变体应该是

typeName表示维度大小无效的数组类型


我认为当您使用被认为是禁止使用的大小时,数组中会出现无效大小。例如负值,或对于某个数组类型来说太大而无法容纳的值。@Char唯一的问题是数组大小不是该类型的一部分
newint[100]
newint[1000]
生成相同的类型:
int[]
。只有数组维度是类型的一部分:
new int[100100]
生成类型
int[,]
。我仍然不知道,当我只想通过类型名称获取类型信息时,该方法如何知道数组的大小?也许更正确的问题是,我必须将什么值传递给
typeName
,以便它与主题中的大小写匹配?@hvd至少在C#中是这样,但是.NET运行时本身允许数组类型指定下限和上限,所以可能会在这种情况下引发异常?这个方法有一个奇怪的语法来指定数组的下限。文档中说,
Type.GetType(“MyArray[*]”)指定了一个“具有未知下限的一维数组”。我想这可能就可以了
var t=Type.GetType(“System.Int32[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,”,true)但异常只是说它“维度太多”