购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP


陷阱07
防不胜防
——params关键字载入空值时的陷阱

1.陷阱产生的场景

在编写方法时,可能会遇到这样的问题,不确定这个方法要传入多少个参数,或者随着程序的开发进度,该方法的参数会发生很大变化,为了支持不确定个数的参数传入,在C#语言中引入了params关键字,使用params关键字修饰object类型的数组并作为方法的参数类型,可以解决方法参数不确定的问题。但这里有一个问题,如果调用方法的时候传入的参数是通过某种途径获得的,并且不确定它的值是否为空,那么就有可能把空值传入到方法中,若方法中的代码逻辑编写得不够严谨,就会产生运行时错误。

例4.7 params关键字载入空值时的陷阱(光盘位置:光盘\MR\Instance\4\07\ Use Params),该实例的主要代码如下:

如上面的代码,在Main方法中调用ShowInfo方法,并向该方法传入一个字符串、一个整数和一个空值null,编译后在运行过程中出现空引用异常提示,如图4.11所示。

2.陷阱的分析

在出现异常的语句处设置断点,并添加对for语句的局部变量i的快速监视,如图4.12所示。

图4.11 空引用异常提示

图4.12 变量i的快速监视

通过查看快速监视得知,出现问题的参数索引值为2,也就是ShowInfo方法在被调用时传入的第三个参数,由于该参数被传入了空值,所以在调用Tostring方法时产生了空引用异常。

3.陷阱的解决方法

解决办法就是修改ShowInfo方法中的代码,增加一些关于空值的逻辑判断,然后对空值的情况进行特殊处理,修改后的代码如下:

注意

在方法声明中params关键字之后不允许有任何其他参数,并且在方法声明中只允许一个params关键字。 CloL4zyxJi+ycjTBHZg3q9hehK1j2f9B5gUdQO2k1ZRcOU4+J73xD4VHQY2vbi7w

点击中间区域
呼出菜单
上一章
目录
下一章
×