如果对象是泛型类型,我想执行一个测试.我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相关问答推荐

升级到.NET8后,SignalR(在坞站容器上)网关损坏

使用 PowerShell 从文件夹中获取文件名的最快\最好的方法是什么?

无法使用 int.Parse 从字符串转换值

线程安全性的单元测试?

为什么这个多态 C# 代码会打印它的功能?

为什么 .NET 内部 Hashtable 中有一个 Thread.Sleep(1)?

.Include() 与 .Load() 在 EntityFramework 中的性能

使用泛型装箱和拆箱

我应该从 .NET 中的 Exception 或 ApplicationException 派生自定义异常吗?

为什么 C# 多维数组不实现 IEnumerable

如何在 C# 7 中返回多个值?

如何从 .NET 中的流中获取 MemoryStream?

C#中的引用类型

ReaderWriterLockSlim 什么时候比简单的锁更好?

您可以使用 Xamarin 开发 Linux 应用程序吗?

如何从 .NET 读取 PEM RSA 私钥

如何获取命名空间中的所有类?

并发字典正确用法

如何在 C# 中处理 XML

如果选中,则更改列表框项的 WPF DataTemplate