如果对象是泛型类型,我想执行一个测试.我try 了以下方法但没有成功:

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}

我做错了什么?我该如何执行此测试?

推荐答案

如果要判断它是否是泛型类型的实例:

return list.GetType().IsGenericType;

如果要判断它是否为通用List<T>:

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);

正如Jon指出的,这判断了确切的类型等价性.返回false并不一定意味着list is List<T>返回false(即,不能将对象分配给List<T>变量).

.net相关问答推荐

为什么 GetShortestDayName 返回的名称比预期的短?

在接口内部声明 IEnumerable 而在具体类中声明 IList

问:在 Blazor WASM 应用程序中存储 api 密钥的最佳方式是什么?

如何从 HashSet 中检索实际项目?

如何在 ASP.NET Core 中使用 Bootstrap 4

如何从 appsettings.json 中获取价值

软件包版本始终为 1.0.0,带有 dotnet pack

我可以先使用 EF 代码和 .net 核心生成迁移脚本吗

等效于 C# 在 powershell 中的“使用”关键字?

如何卸载“Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1”?

.NET 4.5 中的默认安全协议

IIS Express - 500.19 无法读取配置文件 - 因为它正在查看错误的路径

多个等待与 Task.WaitAll - 等效?

/langversion 的错误选项“6”无效;必须是 ISO-1、ISO-2、3、4、5 或默认值

写入 Windows 应用程序事件日志(log)

CryptographicException 未处理:系统找不到指定的文件

创建一个已完成的任务

使用给定的 DateTime 对象获取一个月的第一天和最后一天

如何找到特定 dll 的 PublicKeyToken?

从数据读取器填充数据表