本帖最后由 wangchao813 于 2009-06-22 15:57:10 编辑

解决方案 »

  1.   

    实在不好意思,你的代码我看得云里雾里的!
    我想确定下,你的代码是JavaScript吗?var obj =Cache[parms]; 
    Cache[parms];中存放的是一个类对象
    那可以这样写吧
    for(var a in obj)
    {
       .....
    }
    遍历出object中的所有属性
      

  2.   

    for(var a in obj) 

       alert(obj[a]);  
      

  3.   

    Cache[parms]里面存储的是object对象,在写代码的时候确切是什么类型的对象,编译器不知道
    但是在你运行调试的时候,编译器也是对他进行强制转换,转换成你保存的对象类型,所以你才可以看到name和Age的属性,
    所以在codeing的时候Cache[parms]这里必须进行强制转换,不然编译器不知道啥类型的。
      

  4.   

    for in 语句是可以遍历出来的
      

  5.   

    string a="abc";  //强类型
    var str = a; //弱类型,用他的时候才指定类型
      这样的话 str 的值是 abc  str 的类型是 string
    object o = classobj; //声明一个对象的的引用o 指向clasobj 
      

  6.   

    foreach in 是对集合的遍历,你这AGE,Name是对象的属性,而不是集合
      

  7.   

    呵呵,你还没搞明白啊?
    你之所以能在调试状态下看到obj的类型及属性,是因为编译器的svchost.exe,宿主进程为你计算得到的,其原理与我们直接在代码中用反射是一样的
    var匿名类型只能根据=后面的类型类推断变量的类型,所以我觉得你要的这个效果除了强制转换和反射之外,很难有其它办法了
      

  8.   

    一,解释下 
    string a="abc"; 
    var str = a;     
    var 关键字定义的是匿名变量,就是要靠=右边的来推断出变量的类型 上面的str是字符串的变量了,那么如果你str=123;就会发生编译时错误。object o = class obj; 
    object是所有类型的基类,所有的值类型包括引用类型都是间接或者直接继承于object 不信的话你可以obj.点了以后肯定有ToString()方法。1,var class = classobj; 
    参考上面的解释
    2,var class = o; 
    参考上面的解释二、 
    var obj =Cache[parms];        
            Response.Write(parms); 
            Response.Write(obj.GetType()); Cache[parms];中存放的是一个类对象,对象中包含两个属性name,age。 
    Cache[parms];        返回的是一个object; 
    obj 但是运行时是可以看到name,age属性的。        
    是否能够遍历运行时的obj。那你可以var obj=(类名)Cache[parms];
    要想可以遍历就要实现IEnumerable接口