泛型类型参数不是类型
本文关键字:类型 泛型类型参数 | 更新日期: 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);
}
希望有帮助!