typeof()的学习

问题描述

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类型”的数据直接硬编码生成程序。而不是作为一个函数,不是在运行时传参数的。

时间: 2024-11-17 23:13:52

typeof()的学习的相关文章

看图学习javascript

如果想成为一个高效的javascript的程序员,深刻理解javascript的语法是必须的.记得上小学的时候,再难的数学题通过画图的方式很快就能解决,我们在学习javascript有时感觉一些语法也比较难理解,为何不能用画图的方式帮助我们理解呢?下面我们就把javascript一些基本的语法转换成图行元素,估计您会有一个醍醐灌顶的感觉.这个系列文章我准备使用两篇文章写完,今天我们来看一些最基本的内容.   在javascript中变量名(variable)就是一个简单的标记,来引用内存中的一个

js面向对象学习 - 对象概念及创建对象

一.对象概念 对象是什么?对象是"无序属性的集合,其属性可以包括基本值,对象或者函数".也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数据属性和访问器属性. 1.数据属性又包含     Configurable //表示能否通过delete删除,默认为true:     Enumerable //表示能否通过for-in循环返回属性,默认为true;     Writable   //表示能否修改属性的值,默认为true;     Value      

[四天学会ajax]学习ajax教程第一天

ajax|教程 Ajax 由 HTML.JavaScript 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序.本文的作者是一位 Ajax 专家,他演示了这些技术如何协同工作 -- 从总体概述到细节的讨论 -- 使高效的 Web 开发成为现实.他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象. 五年前,如果不知道 XML,您就是一只无人重视的丑小鸭.十八个月前,Ruby 成了关注的中心,不知道 Rub

c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+,源码下载。

程序|下载 前几天没事,写了一个小程序,可以用于学习C#.程序使用了VS.NET环境编译,你的机器只要安装了.NET Framework SDK就可以运行.源码和执行文件可以下载你不想下载也可读一下源码(图片资源等需要下载).namespace Leimom.FiveChess{    using System;    using System.Drawing;    using System.Collections;    using System.ComponentModel;    usi

Castle学习笔记----初探IOC容器

Windsor是Castle 的一个IOC容器.它构建于MicroKernel之上,功能非常之强大,能检测类并了解使用这些类时需要什么参数,检测类型和类型之间工作依赖性,并提供服务或者发生错误时提供预警的机制. 通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并告诉容器所注册的服务由那一个类来实现他.通常建立容器我们可以用以下定义来实现: 1IWindsor

window.showModalDialog()返回值的学习

    本篇文章主要介绍了window.showModalDialog()返回值的学习心得.需要的朋友可以过来参考下,希望对大家有所帮助 下面先说说window.showModalDialog的基本用法   showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框. window.showModelessDialog()方法用来创建一个显示

javascript函数作用域学习示例

 javascript中没有块级作用域,取而代之的javascript使用的是函数作用域,下面使用示例学习一下js作用域的使用方法 在一些类似c语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明他们的代码段之外是不可见的,我们称为块级作用域(block scope),而javascript中没有块级作用域.取而代之的javascript使用的是函数作用域(function scope):变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的. 在如下代码中,在不同

backbone.js学习实例

着手开始学习 什么是backbone.js? 美公的理解是 一种js的mvc的框架,分为Model(模型),View(视图)和Collection(集合),如果有mvc分层开发经验的话,会容易理解. 为什么学习这个? 因为用他可以在的单个页面完成多个应用模块,给用户的感觉是不用刷新页面,适合webapp开发 $(function(){ var testModel = Backbone.Model.extend({ defaults:{ id:"1", name:'meigong', a

JavaScript高级程序设计(第3版)学习笔记6 初识js对象_基础知识

在房子里面可以放你想放的任意事物--如果你有足够的美学造诣,你甚至可以弄一个房中房试试--当然,为了方便管理,我们会给房子里存放的所有事物都会取上一个不重复的名字,比如医药房间里的各种药品名称.在ECMAScript中,你可以在对象中存放任意你想放的数据,同样,我们需要给存放的数据取一个名字--也就是对象的属性名,再存放各种数据.再看看ECMA-262中对象的定义:无序属性的集合,其属性可以包含简单数据类型值.对象或者函数. 进入对象,我开始有些激动了,说实话,让我想起做这系列学习笔记的最初原因