找到Object的类型,可能是System.Collections.Specialized.StringCollection

时间:2011-12-08 05:34:12

标签: c# collections

我不确定为什么下面的条件没有得到满足。

 else if (obj.GetType() == typeof(Dictionary<string, System.Collections.Specialized.StringCollection>))

Obj是Dictionary<string, System.Collections.Specialized.StringCollection>)

类型的对象

当我执行上面的代码时,它不会进入else if条件。

任何指针?

3 个答案:

答案 0 :(得分:1)

我会将其切换为使用is关键字,所以

else if (obj is Dictionary<string, System.Collections.Specialized.StringCollection>)

如果obj在其祖先的某个地方具有该类型,它将匹配。如果您尝试仅仅根据确切的类型进行操作,则可能无效。

如果仍然不起作用,那么我将这些类型放入变量并在调试器中检查它们以查看实际情况。

答案 1 :(得分:0)

刚刚测试过。

object obj = new Dictionary<string, System.Collections.Specialized.StringCollection>();
        if (obj.GetType() == typeof(Dictionary<string, System.Collections.Specialized.StringCollection>))
            System.Diagnostics.Debug.Assert(false);

没关系。试着写

Type objType = obj.GetType();

看看你得到了什么。

答案 2 :(得分:0)

您可以使用"=="将其与is关键字,IsSubclassOf方法和Equals()进行比较,而不是使用{{1}}进行比较。在这种情况下,任何此方法都适合您。< / p>