在c#中,Type type的值可以是数组么?

长期以来我一直认为是不行的,直到今天我看到了某外国c#框架中的一段代码:

void someFunction(Type type)
{
    ………………(肯定没有修改到参数 type 值的句子)
    
   if (type.IsArray) 
   { 
      inwardType = type.GetElementType();
   }

    ………………(肯定没有修改到参数 type 值的句子)
}

他在这里判断Type type就代表Type type的值可以是数组对么?
于是我自己瞎试了半天,也没试成功,比如

Type[] ts = new Type[] { typeof(int), typeof(string) };
object o = ts;
Type type = o as Type

当然我自己也知道这样写肯定是不对的,事实也证明虽然Type type = o as Type可以成功把o赋值给type,但是o为null了……

所以我很好奇:既然判断了if (type.IsArray),就说明肯定某种情况下参数Type type会接受一个数组作为它的值并且不报错吧?那么究竟是何种情况才会导致它成立呢?求大家指点!

阅读 3.8k
1 个回答
新手上路,请多包涵

我弄明白了,之所以判断

if (type.IsArray)

是因为实参会传入类似

typeof(int[])

这样的值,打扰大家了……

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进