泛型类型参数不是类型

本文关键字:类型 泛型类型参数 | 更新日期: 2023-09-27 17:54:31

我发现下面的内容有点令人困惑....

Dictionary<Type, Object> _typeMap;
public void RegisterType<T>(Object o)
{
    _typeMap.Add(typeof(T), o);
}

为什么Add法中需要typeof(T) ?T类型参数不是已经是Type了吗?还有什么?

泛型类型参数不是类型

T是类型名称typeof用于检索相应的Type对象。

泛型类型参数的工作方式与任何其他类型名称(例如int)完全相同。你也不能完全做到typeMap.Add(int, 0);

No。Add这里需要一个Type类的实例

泛型类型参数不是 Type类的实例。

必须加上typeof(T),因为T是类定义,而type是描述type的对象,对于T、object和String…等等。

typeof获取类定义的类型

这个解决方案让我觉得有点"不"。我相信这段代码的结果将总是试图添加一个键为"Type"的条目到字典中,因为您总是得到类型的"typeof"。相反,我认为你想要的是……

public void RegisterType<T>(Object o)
{
    _typeMap.Add(T, o);
}

希望有帮助!