1. 概述 一个.net程序不仅包含代码和数据,还包含 元数据. 本章介绍如何应用attributes以及如何使用反射来获取它,还有如何使用CodeDom和expression trees来实现在运行时生成代码. 2. 主要内容 2.1 创建和使用attributes ① attributes用来向程序添加元数据.可以应用到所有类型:程序集.类.方法.参数.属性. [Conditional("CONDITION1"), Conditional("CONDITION2"…
1. 概述 本章内容包括 管理非托管资源.使用IDisposable接口 以及 管理析构器和垃圾回收. 2. 主要内容 2.1 理解垃圾回收机制 ① 代码执行的时候,内存中有两个地方存放数据项:堆 和 栈. ② 一个方法结束的时候,其使用的栈空间会被自动清空. 而堆空间,是由垃圾回收器管理的. ③ 垃圾回收器的工作原理是:启动以后,垃圾回收器的标记程序会遍历堆上保存的对象,标记出仍然被引用的对象,然后压缩程序启动,它会把当前仍然存在引用的对象移动到一起,然后释放掉其他不存在引用的对象. ④ 执行…
1. 概述 本章包括 字符串基本操作 以及 查找.遍历.格式化字符串. 2. 主要内容 2.1 在.net平台中使用字符串 C#中,string是用来保存文本信息的.是一个被当做值类型使用的引用类型. C#中,string对象是不可变的.每次更改都会重新创建一个string对象..net内部有称为字符串驻留(interning)的机制来优化效率. 2.2 操作字符串 ① StringBuilder StringBuilder 会使用内部的字符串缓存来提高效率.甚至可以允许修改内部某一个字符. 当…
1. 概述 本章内容包括 访问控制符.属性 和 显式接口实现. 2. 主要内容 2.1 访问控制符 封装的核心是隐藏信息.访问控制符用来实现类型成员的访问控制. C#的访问控制符有:public, internal, protected, protected internal (or的关系), private. 使用 InternalsVisibleToAttribute, 可以设置开放给其他程序集使用. [assembly:InternalsVisibleTo("Friend1a")…
1. 概述 本章介绍 值类型的装箱拆箱.类型转换 以及 C#4.0新推出的 dynamic 关键字. 2. 主要内容 2.1 装箱和拆箱 2.2 类型转换 有四种方式可以实现类型转换: ① 隐式转换:编译器允许的,类型安全的转换.无需特殊的标记符号,编译器直接转换. ② 显式转换:无法隐式转换,可能会丢失精度的情况,需要用类型符号来强制转换. ③ 自定义转换 class Money { public Money(decimal amount) { Amount = amount; } publi…
1. 概述 本章内容包括 C#5中如何更好的创建类型以及如何扩展现有类型. 2. 主要内容 2.1 如何选择类型 C#类型系统包括三种类型:值类型.引用类型.指针类型.(指针类型用于非托管代码,很少使用.) ① 创建枚举类型(enums) 合理使用枚举类型 可以提高代码的可读性和可维护性. ② 值类型 还是 引用类型 使用值类型的三个推荐的原则: a. 对象的体积小.  b. 对象逻辑上不可变.  c. 使用中会生成很多对象. * 结构类型(struct) 不能自己定义空构造器,不适用继承系统.…
1. 概述 本章包括 设计和实现接口.创建和使用基类 以及 使用.net类库提供的标准接口. 2. 主要内容 2.1 设计和实现接口 一个接口包含公共的方法.属性.事件.索引器.类和结构都可以实现接口. interface IExample { string GetResult(); int Value { get; set; } event EventHandler ResultRetrived; int this[string index] { get; set; } } class Exa…
EJB中EntityManager的管理方式有两种:Container-managed EntityManager和Application-managed EntityManager 即容器管理的EntityManager和应用管理的EntityManager 在EJB中,EntityManager所进行的持久化的方式与Hibernate的方式是不同的. 1.在Hibernate的同一个事务中,通过getCurrentSession获取的session对象均为同一个,保存于threadlocal…
Spring支持两种类型的事务管理: 编程式事务管理 :这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护. 声明式事务管理: 这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务.…
Spring 支持两种类型的事务管理: 1. 程序化事务管理:在此过程中,在编程的帮助下管理事务.它为您提供极大 的灵活性,但维护起来非常困难. 2. 声明式事务管理:在此,事务管理与业务代码分离.仅使用注解或基于 XML 的配置来管理事务.…