我不确定为什么下面的条件没有得到满足。
else if (obj.GetType() == typeof(Dictionary<string, System.Collections.Specialized.StringCollection>))
Obj是Dictionary<string, System.Collections.Specialized.StringCollection>)
当我执行上面的代码时,它不会进入else if
条件。
任何指针?
答案 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>