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)代码>但异常只是说它“维度太多”