通用类型参数不是类型?

时间:2011-05-04 10:35:44

标签: c# generics types typeof

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

Dictionary<Type, Object> _typeMap;

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

为什么typeof(T)方法需要AddT类型参数不是Type吗?还有什么呢?

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

没有。 Add此处需要 Type类的实例

通用类型参数 Type类的实例。

答案 2 :(得分:0)

你需要输入typeof(T),因为T是类定义,类型是描述Type的对象,T和Object以及String等等。

typeof获取类定义的类型。

答案 3 :(得分:-1)

这个解决方案让我觉得有点像“opps”。我相信这段代码的结果总是试图将一个带有“Type”键的条目添加到字典中,因为你总是得到一个类型即可。相反,我认为你在寻找的是......

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

希望它有所帮助!