我想执行一个对象是否为通用类型的测试。我已经尝试了以下方法,但均未成功:
public bool Test() { List<int> list = new List<int>(); return list.GetType() == typeof(List<>); }
我做错了什么以及如何执行此测试?
如果要检查它是否是泛型类型的实例:
return list.GetType().IsGenericType;
如果要检查它是否是通用的List<T>:
List<T>
return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
正如乔恩(Jon)所指出的那样,这检查了确切的类型等效性。返回false并不一定意味着list is List<T>返回false(即无法将对象分配给List<T>变量)。
false
list is List<T>