本文摘至于:http://blog.csdn.net/springfileld/article/details/17720537

---------------------------------------------------------------正文-----------------------------------------------------------------

反射被广泛地用于那些需要在运行时检测或修改程序行为的程序中。这是一个相对高级的特性,只有那些语言基础非常扎实的开发者才应该使用它。如果能把这句警示时刻放在心里,那么反射机制就会成为一项强大的技术,可以让应用程序做一些几乎不可能做到的事情。

优点:
            反射提高了程序的灵活性和扩展性,降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类;

缺点:
           1、性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。      
          2、使用反射会模糊程序内内部逻辑:程序员希望在源代码中看到程序的逻辑,反射等绕过了源代码的技术,因而会带来维护问题。反射代码比相应的直接代码更复杂。   至于执行效率的话,还可以,因为它是一种强类型语言,执行效率不错。不过,建议将反射过后,保存进 cache中。

尽管反射非常强大,但也不能滥用。如果一个功能可以不用反射完成,那么最好就不用。在我们使用反射技术时,下面几条内容应该牢记于心:

首先是性能:

反射包括了一些动态类型,所以JVM无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被 执行的代码或对性能要求很高的程序中使用反射。

安全:
使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如Applet,那么这就是个问题了。

成员的内部暴露:

由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用--代码有功能上的错误,降低可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化

转载于:https://www.cnblogs.com/CHNMurphy/p/8607752.html

C# 中使用反射的优缺点相关推荐

  1. java 反射机制_详解Java中的反射机制的优缺点

    一.什么是反射? 对于程序员来说,应该很少需要直接使用反射工具:之所以在语言中提供它们,是为了支持其他Java特性,比如对象序列化.Java Beans以及RMI.还有就是在很多框架中,也是应用到了反 ...

  2. Java面试重点_4. 一文彻底搞懂Java中的反射 0.5

    文章目录 一, 什么是反射? 反射存在的意义是什么? 1.1 反射存在的意义 二, 反射是如何体现了动态性的? 三, 取得Class对象的六种方法 四, 通过反射创建被反射类的实例对象 以及被反射类的 ...

  3. 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等

    这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...

  4. 来看看如何在 C# 中使用反射

    C# 中的 反射 常用于在程序的运行时获取 类型 的元数据,可获取的信息包括已加载到进程中的 程序集 和 类型 信息,它和 C++ 中的 RTTI(Runtime Type Information) ...

  5. C#温故而知新学习系列之.NET框架高级特性—概述.NET框架中的反射(一)

    阅读目录 一:什么是元数据? 二:概述.NET框架中的反射 一:什么是元数据? 元数据,就是描述数据的数据,它存储在PE文件中,PE文件由IL Code和元数据组成,元数据为.NET提供了丰富的自我描 ...

  6. 浅说Java中的反射机制(一)

    在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...

  7. 再议C#方法中的反射方式和委托方式

    再议C#方法中的反射方式和委托方式 我们将要谈到的是C#方法中的反射方式和委托方式,文中还将给出具体代码,以方便大家测试和实践. AD: 在开发过程中对静态方法的调用是通过类型名后面加个点而后是调用方 ...

  8. .Net 中的反射(反射特性) - Part.3

    .Net 中的反射(反射特性) - Part.3 反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发 ...

  9. 转:.Net 中的反射(反射特性) - Part.3

    .Net 中的反射(反射特性) - Part.3 反射特性(Attribute) 可能很多人还不了解特性,所以我们先了解一下什么是特性.想想看如果有一个消息系统,它存在这样一个方法,用来将一则短消息发 ...

  10. 轻轻松松明白什么是反射,反射有什么用,简单上手反射以及反射的优缺点

    1. 什么是反射 反射可以动态获取类信息并创建对象.执行方法.属性赋值等,通过反射,我们就可以通过字节码文件反推得到源代码. 2.反射怎么用 2.1 在使用反射前,我们需要介绍4个类,分别是java. ...

最新文章

  1. C++primer 9.2.1节练习
  2. OpenStack icehouse系列之计算节点搭建
  3. Python基础系列讲解——继承派生和组合的概念剖析
  4. C#中通过HttpClient发送Post请求
  5. Jdk8一行代码读取文件
  6. 详解数据科学与数理统计的基本概念
  7. TensorFlow HOWTO 2.3 支持向量分类(高斯核)
  8. OpenShift 4 - 使用Prometheus监控Node节点
  9. 程序员薪资怎么论高级还是初级_和程序员一样高薪,却过着清闲生活,测试员什么人都可做吗?...
  10. foreman架构的引入3-安装Foreman1.5.3架构(all-in-one)
  11. CSS规则重要性以及继承、层叠
  12. string equals java_Java equals比较方法(Java StringEquals)
  13. 理解的三极管输出特性曲线图的放大区和饱和区,利用∆Ic小于∆βIb差值比较曲线左移右移关系
  14. ckplayer6.8 php播放,ckplayer
  15. C++ Primer学习笔记-----第十六章:模板与泛型编程
  16. 关于眼镜的后续。。。。
  17. GhostXP_SP3完整纯净版V3.5 By songyongzhi
  18. NLP之PTM:自然语言处理领域—预训练大模型时代的各种吊炸天大模型算法概述(Word2Vec→ELMO→Attention→Transfo→GPT系列/BERT系列等)、关系梳理、模型对比之详细攻略
  19. 智慧城市与智能网联汽车如何协同发展?
  20. linux设置用户的执行权限,Linux下ACL权限控制以及用sudo设置用户对命令的执行权限...

热门文章

  1. 终于在MAC上把OpenJDK8-u272编译通过了
  2. UOS U盘复制性能,3M
  3. 生信装虚拟机好还是云服务器,学习小组Day2笔记--潘潘
  4. mysql将数据拟合曲线_有关任意多条曲线的拟合度算法
  5. 微信头像失效_如何判断微信授权的头像是否失效
  6. python基础教程之pymongo库
  7. Goland 学习笔记之--govendor
  8. MySQL 创建数据表的命令行
  9. 复制linux虚拟机后ifconfig没有出现网卡处理方法
  10. zabbix 3.0.7 for Centos 7.2 安装