C#中,对方法返回多值的一些疑问
1.返回多值的时候是用几个out参数比较好,还是返回一个数组比较好?从各方面来说的话。。
2.返回多值的情况可以从整体设计的角度去避免吗?
------解决方案--------------------建个类,多值作为属性
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------out不仅仅可以是普通的string,也可以是Array,class,list等等。
------解决方案--------------------同一类型,可以用数组,
不同类型建议你类型对象来传递。
------解决方案--------------------1.返回多值的时候是用几个out参数比较好,还是返回一个数组比较好?从各方面来说的话。。
类型一样的话,返回数组,不一样的话返回一个类
2.返回多值的情况可以从整体设计的角度去避免吗?
我认为返回多值是很常见的事情,为什么要去避免呢?
------解决方案--------------------至少有两种思路:
1.将参数封装为实体类
2.将参数作为被调用方法所在类的成员
如果没有线程安全需求的话,第2种看起来更好些
------解决方案--------------------Tuple 打包
IOC 可以
------解决方案--------------------
如果谈到“设计”,实际上纯粹的面向对象设计中的方法,应该是没有参数、也没有返回值的。这样可以非常清晰地围绕着对象类来分配功能职责。
但是我们还是想简化、以及使用课堂上教的方法/函数形式。这些都是变形。因此返回一个业务实体对象、使用多个out,或者返回数组,你都可以从“是否方便和清晰”的角度去多方使用,看不出有什么纠结的必要。
实际上,针对同一个功能代码,你可以用多种重载方法来封装你的方法。只不过你要理解,这些都是编程伎俩,都离不开同一个功能设计,只不过是比较后期(比较底层)的实现方法不同而已。
------解决方案--------------------对于返回参数类型一样时,很多人建议用数组,我还是喜欢用类。
我想建议用数组的人,应该是看重数组占用空间小。
但是类也有自己的好处。就是看起来清晰,维护方便。
比如有5个返回参数,如果去掉其中一个参数,很多参数序号就要变,这样改几次后,你就记不清下标2里存的是什么呢。而类没有这样的问题。
------解决方案--------------------方法返回 return
参数返回 (ref ,out)
自己觉得怎么好就怎么来呗
------解决方案--------------------这个真心没必要纠结。从便于理解来说数组和类对象好些。效率上会有差别但是这个差别太小,没必要区分。