• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > .net中 关于反射的详细介绍

.net中 关于反射的详细介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了.net项目介绍,.net 课程介绍,asp net技术介绍,.net介绍,.net技术介绍等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

概述反射

• 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象。
• 反射机制允许程序在执行过程中动态地添加各种功能。 

 运行时类型标识

•运行时类型标识(RTTI),可以在程序执行期间判定对象类型。例如使用它能够确切地知道基类引用指向了什么类型对象。
•运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常。
•在c#中有三个支持RTTI的关键字:is 、 as  、typeof。 下面依次介绍他们 

 is运算符:

通过is运算符,能够判断对象类型是否为特顶类型,如果两种类型是相同类型,或者两者之间存在引用,装箱拆箱转换,则表明两种类型是兼容的。

class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            B b = new B();
            if (a is A) 
            {
                Console.WriteLine("a is an A");   //这个打印,因为a 是 A 类型的对象
            }
            if (b is A)
            {
                //这个打印,因为b是B类型的对象,而B类型派生于A类型,由于b对象可以转换为A类型,因此b对象与A类型是兼容的,但是反过来就不成立,例如下面不打印
                Console.WriteLine("b is an A because it is derived from");
            }
            if (a is B)
            {
                //这个不打印
                Console.WriteLine("This won't display , because a not derived from B");
            }
            if (a is object)
            {
                //这个打印
                Console.WriteLine("a is an object");
            }
            Console.ReadKey();
        }
    }
    class A { }
    class B : A { }
</div>
as运算符:

 在运行期间执行类型转换,并且能够使得类型转换失败不抛异常,而返回一个null值,其实as也可以看作一个is运算符的简化备选方式(看例子)。

 class Program
    {
        static void Main(string[] args)
        {
            A a = new A();
            B b = new B();
            if (a is B)
            {
                b = (B)a;   //由于a变量不是B类型,因此这里将a变量转换为B类型是无效的。
            }
            else
            {
                b = null;
            }

            if (b ==null)
            {
                //这个打印
                Console.WriteLine("The cast in b=(B)a is not allowed");
            }

            //上面使用as运算符,能够把两部合二为一。

            b = a as B;   //as类型先检查强制类型转换的有效性,如果有效,则执行强类型转换过程。这些都在这一句完成。
            if (b == null)
            {
                //这个打印
                Console.WriteLine("The cast in b=(B)a is not allowed");
            }
            Console.ReadKey();
        }
    }
    class A { }
    class B : A { }
</div>
typeof运算符:

 as ,is 能够测试两种类型的兼容性。但大多数情况下,还需要获得某个类型的具体信息。这就用到了typeof,它可以返回与具体类型相关的System.Type对象,通过System.Type对象可以去顶此类型的特征。一旦获得给定类型的Type对象,就可以通过使用该对象定义的各种属性,字段,方法来获取类型的具体信息。Type类包含了很多成员,在接下来的反射中再详细讨论。下面简单的演示Type对象,调用它的三个属性。

  static void Main(string[] args)
        {
            Type t=typeof(StringBuilder);

            Console.WriteLine(t.FullName);  //FullName属性返回类型的全称

            if (t.IsClass)
            {
                Console.WriteLine("is a class"); //打印
            }
           

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解决.net项目中上传的图片或者文件太大无法上传问题
  • .Net项目中一些常用验证操作
  • .Net项目中一些常用验证操作
  • .net中 关于反射的详细介绍

相关文章

  • 2017-05-11用.NET如何生成二维码
  • 2017-05-11asp.net正则表达式删除指定的HTML标签的代码
  • 2017-05-11在ASP.NET2.0中通过Gmail发送邮件的代码
  • 2017-05-11使用HttpWebRequest向网站模拟上传数据
  • 2017-05-11asp.net 独立Discuz头像编辑模块分离打包
  • 2017-05-11ASP.NET预备知识学习笔记
  • 2017-05-11ASP.NET 返回随机数实现代码
  • 2017-05-11IIS7伪静态web.config配置的方法和规则
  • 2017-05-11ASP.NET缓存方法分析和实践示例代码第1/2页
  • 2017-05-11asp.net下数据库操作优化一例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net 读取并修改config文件实现代码
    • ASP.NET中DataTable与DataSet之间的转换示例
    • 轻松解决asp.net用户ASPNET登录失败问题的方法分享
    • Asp.net GridView隔行变色和光棒效果2种方法实现
    • java 单例模式(饿汉模式与懒汉模式)
    • 自制网页选取本地路径控件(附源码)
    • Asp.net实现MVC处理文件的上传下载功能实例教程
    • asp.net HttpWebRequest自动识别网页编码
    • .net连接Mysql封装类代码 可直接调用
    • asp.net 选择excel类型文件,利用Dos命令成批复制文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有