C#异常、类型转换、数组等。。

一般我们在程序中,如果知道可能发生的异常类型,尽可能捕获,弹出提示给客户端,实在不知道的异常,捕获后写日志记录,业务逻辑上可忽略

1、NullReferenceException  空引用异常

2、StackOverflowException 栈溢出

3、TimeoutException 当已达到指定的超时时间时引发的异常

4、 ArgumentException     在向方法提供的其中一个参数无效时引发的异常  (在某些控件的事件中,可能会出现参数类型无效的异常)

5、 ThreadAbortException 在对   Abort   方法进行调用时引发的异常  

6、IndexOutOfException:该类用于处理下标超出了数组长度所引发的异常

7、IOException:该类用于处理进行文件输入输出操作时所引发的异常

8、ArithmeticException:该类用于处理与算术有关的异常

9、DivideByZeroException:表示整数货十进制运算中试图除以零而引发的异常

 

二、类型转换

is的规则如下:

  • 检查对象类型的兼容性,并返回结果,true或者false;

  • 不会抛出异常;

  • 如果对象为null,则返回值永远为false

as的规则如下:

  • 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;

  • 不会抛出异常;

  • 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。

代码:

if ( o is A )

{A a =(A)o;}

A a=(A)o;

if(a!=null){}

 

三、接口与抽象类的异同?

相同点

    • 都不能被直接实例化,都可以通过继承实现其抽象方法。

    • 都是面向抽象编程的技术基础,实现了诸多的设计模式。

不同点

    • 接口支持多继承;抽象类不能实现多继承。

    • 接口只能定义抽象规则;抽象类既可以定义规则,还可能提供已实现的成员。

    • 接口是一组行为规范;抽象类是一个不完全的类,着重族的概念。

    • 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持。

    • 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法。  

    • 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。

 三、数组间的拷贝与克隆、深拷贝、浅拷贝的区别等

浅拷贝:如果数组中的成员为值类型(如:int,float,double,byte等),则完全复制数值到目标数组中,如果是引用类型(如用户自定 义类型、或者是类库中的类类型:ArrayList等),则指复制引用给目标数组

深拷贝:则是完完全全的创建一个个新对象.对原来数组中的所有对象全部创建新对象.对新数组中的修改不会影响原来数组中的值或对象
C opyTo()和Clone()都属于浅拷贝,这一点是毋庸置疑

如何实现深拷贝?

.NET库中似乎没有提供深拷贝的方法,若要实现深拷贝,需要自己遍历数组,对原数组中的每个对象实现拷贝,层层深入,直到这个对象中的对象中的对象……中的对象为值类型为止

因为只有值类型才是完全拷贝,对一个值进行修改不会影响另一个相同的值
     

 

 

 

 


 

转载于:https://www.cnblogs.com/Tiffany_2008/archive/2010/05/04/1727275.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值