反射、错误与异常

        这两天读了第12章和第13章,内容包括反射、错误与异常。

        反射是一个很重要的知识点,使用它可以完成一些很强大、很复杂的功能。如枚举类型的成员,实例化新对象,执行对象的成员,查找类型的信息,查找程序集的信息,检查应用于类型的定制特性,创建和编译新程序集等。

        由于反射涉及到知识点很多,所以书中之介绍了其中的部分功能:查找类型的信息和检查应用于类型的定制特性。

        什么是特性?

        .NET中可以派生类System.Attribute来定义自己的特性。在定义特性的类中,需要使用AttributeUsage特性的一些属性来控制自定义的特性用法的信息。

        AttributeUsage的第一个参数是枚举类型AttributeTargets,它是必须的,它指定特性可以应用到哪些程序元素上(比如AttributeTargets.Class指定特性应用到类上)。另两个参数是AllowMultiple和Inherited,AllowMultiple指定特性是否可以多次应用在同一个程序元素上(比如AllowMultiple = true表示可以),而Inherited指定特性在应用到类或接口上时,是否由派生类和接口继承,如果应用到方法或属性上时,也可以自动应用到该方法或属性的重载上。

        什么是类型?

        Type类实际是一个抽象的基类,只要实例化了一个Type对象,就实例化了Type的一个派生类。

        获取给定类型的Type引用有3种常用方式:使用C#的typeof运算符(如Type t =  typeof(double);),使用GetType()方法(如double d = 10,Type t = d.GetType();),使用Type的static方法GetType()(如Type t = Type.GetTypes("System.Double");

        Type有很多属性,但是都是只读的(如Name,FullName,IsClass等),还有很多成对的方法(如GetConstructor(),GetConstructors()等)。

       什么是程序集?

       Assembly类是在System.Reflection命名空间中定义的,它允许访问给定程序集的元数据,也包含可以加载和执行程序集的方法。

       错误与异常是程序中不可能避免的,很多人认为程序的大部分工作就是寻找它们并试图处理它们。

       在C#中,所有的异常派生于类Execption,而自定义的异常派生于ApplicationException。

       使用try{.......}catch{.....}finally{......}来捕获异常,处理代码在try块中,如果发生异常将跳出try块,异常将与catch中列举的异常进行匹配,如果能过匹配将执行catch中的代码。不管怎么样,finally块中的代码都会执行,finally块不是必须的。异常块可以嵌套。

       catch和finally块中也可能出现异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值