问题描述
typeof()是什么,typeof()括号里面表示什么意思?
解决方案
解决方案二:
http://msdn.microsoft.com/zh-cn/library/58918ffs
解决方案三:
publicclassStudent{publicstringname;publicintage;}Typet=typeof(Student);反射的入口~C或C++等语言编译后~只是机器码~也就是上面的name和age这个两个变量的名字根本就不会存在~但她们的作用还是存在的~只是名字丢了~C#把编译后还是保存了变量名字~让我们在编程的时候可以获取~做一些特殊操作~来一段伪代码select*fromstudent从数据库查数据Students=newStudent();s.name=datareader["name"];s.age=datareader[age];.......这样写到蛋疼那么我们就用反射找出类有那么变量名字~下面的实现很伪~foreach(varitemintypeof(Student).PropertyName){PropertyValue=datareader[PropertyName];}可以看《C#viaclr》这本书
解决方案四:
补充一下《CLRviaC#》书中的知识点是类类对象不是类对象哦是类类对象当你明白了类类对象那么你就知道typeof其实就是获取这个类类对象
解决方案五:
typeof得到类型。Aa=newA();vart1=a.GetType();vart2=typeof(A);以上两种写法,t1t2等价。
解决方案六:
typeof(A)看那上去好像是个函数。虽然不是函数,但是也差不多,你也可以看成是一个系统函数也没什么错。它是一个“宏”,在编译后变为两条指令,一条是把A类型所在文件的“元信息”读取出来,另一条是调用.net的核心库mscorlib的一个函数把这个元信息转换为标准的“类型数据结构”。
解决方案七:
所以“括号里边”的,必须让编译器理解(而不是运行时去计算出来),编译器直接从它的语义分析过程中得到的信息中把定义了A这个类型的代码文件找出来,把里边的元数据记录中的对应“A类型”的数据直接硬编码生成程序。而不是作为一个函数,不是在运行时传参数的。