CLR via C# 数组 数组的传递和返回

数组作为实参传给方法时,实际传递的是对该数组的引用。因此,被调用的方法能修改数组中的元素。如果不想被修改,必须生成数组的拷贝并将拷贝传给方法。注意,Array.Copy方法执行的是浅拷贝。换言之,如果数组元素是引用类型,新数组将引用先有的对象。

类似的,有的方法会返回数组的引用。如果方法构造并初始化数组,返回数组引用是没有问题的。但假如方法返回的是对字段所维护的一个内部数组的引用,就必须决定是否想让该方法的调用者直接访问这个数组及其元素。如果是,就可以返回数组引用。但更常见的情况是,你并不希望方法的调用者获得这个访问权限。所以,方法应构造一个新数组,并调用 Array.Copy 返回对新数组的引用。再次提醒,Array.Copy 执行的是对原始数组的浅拷贝。

如果定义返回数组引用的方法,而且数组中不包含元素,那么这个方法既可以返回null,也可以返回对包含零个元素的一个数组的引用。实现这种方法时,Microsoft强烈建议让它返回后者,因为这样能简化调用该方法时需要写的代码(因为不需要执行null值检测)。

对字段也应如此。如果类型中有一个字段时数组引用,应考虑让这个字段始终引用数组,即使数组中不包含任何元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值