是在搞不明白。。。谢谢

时间:2022-09-08 15:09:29
一,解释下
string a="abc"; 
var str = a; 

object o = classobj; 

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。

17 个解决方案

#1


实在不好意思,你的代码我看得云里雾里的!
我想确定下,你的代码是JavaScript吗?

var obj =Cache[parms]; 
Cache[parms];中存放的是一个类对象
那可以这样写吧
for(var a in obj)
{
   .....
}
遍历出object中的所有属性

#2


c#

#3


引用 1 楼 yyq136 的回复:
实在不好意思,你的代码我看得云里雾里的! 
我想确定下,你的代码是JavaScript吗? 

var obj =Cache[parms]; 
Cache[parms];中存放的是一个类对象 
那可以这样写吧 
for(var a in obj) 

  ..... 

遍历出object中的所有属性

for(var a in obj) 

   alert(obj[a]);  

#4


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

#5


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

#6


ding

#7


帮顶

#8


引用 5 楼 yyq136 的回复:
for in 语句是可以遍历出来的

c#,谢谢

#9


string a="abc";  //强类型
var str = a; //弱类型,用他的时候才指定类型
  这样的话 str 的值是 abc  str 的类型是 string


object o = classobj; //声明一个对象的的引用o 指向clasobj 

#10


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

#11


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

#12


一,解释下 
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接口

#13


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才能遍历出来这个这些运行时属性,(强制转换和反射之外),集思广益,看看有没有别的办法吧。。。

#14


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才能遍历出来这个这些运行时属性,(强制…


呵呵,那好吧,我帮你顶吧,等牛人来回答

#15


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才…

真的很谢谢。

#16


引用 12 楼 chen_ya_ping 的回复:
一,解释下 
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; 
参…

我要遍历的是类对象的属性。。。不是集合啊

#17


up

#1


实在不好意思,你的代码我看得云里雾里的!
我想确定下,你的代码是JavaScript吗?

var obj =Cache[parms]; 
Cache[parms];中存放的是一个类对象
那可以这样写吧
for(var a in obj)
{
   .....
}
遍历出object中的所有属性

#2


c#

#3


引用 1 楼 yyq136 的回复:
实在不好意思,你的代码我看得云里雾里的! 
我想确定下,你的代码是JavaScript吗? 

var obj =Cache[parms]; 
Cache[parms];中存放的是一个类对象 
那可以这样写吧 
for(var a in obj) 

  ..... 

遍历出object中的所有属性

for(var a in obj) 

   alert(obj[a]);  

#4


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

#5


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

#6


ding

#7


帮顶

#8


引用 5 楼 yyq136 的回复:
for in 语句是可以遍历出来的

c#,谢谢

#9


string a="abc";  //强类型
var str = a; //弱类型,用他的时候才指定类型
  这样的话 str 的值是 abc  str 的类型是 string


object o = classobj; //声明一个对象的的引用o 指向clasobj 

#10


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

#11


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

#12


一,解释下 
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接口

#13


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才能遍历出来这个这些运行时属性,(强制转换和反射之外),集思广益,看看有没有别的办法吧。。。

#14


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才能遍历出来这个这些运行时属性,(强制…


呵呵,那好吧,我帮你顶吧,等牛人来回答

#15


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


嘿嘿,谢谢,你说的这些我明白,其实主要一个问题。。。怎么才…

真的很谢谢。

#16


引用 12 楼 chen_ya_ping 的回复:
一,解释下 
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; 
参…

我要遍历的是类对象的属性。。。不是集合啊

#17


up