检查参数类型

本文关键字:类型 参数 检查 | 更新日期: 2023-09-27 18:04:55

我想检查一下,方法的参数具有哪种类型,以便给出我在方法内部确定的变量,其类型为:

public static Object getFileContent(String filename, Type returntype)
{
     if (returntype.GetType().Equals(string))
     {
       // do something
     }
}

这行不通。如何检查returntype是string还是List<string> ?

检查参数类型

returntype == typeof(string)

不需要调用GetType,因为已经有类型。(GetType无论如何不会返回一个有用的答案,它将返回typeof(Type))。

使用typeof操作符代替

 if (returntype.Equals(typeof(string)))
 {
   // do something
 }

还是

 if (returntype == typeof(string))
 {
   // do something
 }
if(returnType == typeof(String) || return == typeof(List<String>))
    //logic

在这种情况下,您只需检查returntype是否与string相同类型。比较Type实例时,最好的方法是简单地使用==操作符

return returntype == typeof(string);

如果你必须处理COM接口,你会想使用IsEquivalentTo方法而不是==

return returntype.IsEquivalentTo(typeof(TheInterface));

这是必要的,因为COM中的嵌入式互操作类型将显示为不同的Type实例。IsEquivalentTo方法将检查它们是否表示相同的底层类型。

我自己更喜欢is操作符:

if (returntype is string)
{
    // do something
}