日期:2014-05-17  浏览次数:20924 次

C#中,对方法返回多值的一些疑问
1.返回多值的时候是用几个out参数比较好,还是返回一个数组比较好?从各方面来说的话。。
2.返回多值的情况可以从整体设计的角度去避免吗?

------解决方案--------------------
建个类,多值作为属性
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
out不仅仅可以是普通的string,也可以是Array,class,list等等。
------解决方案--------------------
同一类型,可以用数组,
不同类型建议你类型对象来传递。
------解决方案--------------------
1.返回多值的时候是用几个out参数比较好,还是返回一个数组比较好?从各方面来说的话。。
类型一样的话,返回数组,不一样的话返回一个类
2.返回多值的情况可以从整体设计的角度去避免吗?
我认为返回多值是很常见的事情,为什么要去避免呢?
------解决方案--------------------
至少有两种思路:
1.将参数封装为实体类
2.将参数作为被调用方法所在类的成员

如果没有线程安全需求的话,第2种看起来更好些
------解决方案--------------------
Tuple 打包 

IOC 可以
------解决方案--------------------
引用:
1.返回多值的时候是用几个out参数比较好,还是返回一个数组比较好?从各方面来说的话。。
2.返回多值的情况可以从整体设计的角度去避免吗?


如果谈到“设计”,实际上纯粹的面向对象设计中的方法,应该是没有参数、也没有返回值的。这样可以非常清晰地围绕着对象类来分配功能职责。

但是我们还是想简化、以及使用课堂上教的方法/函数形式。这些都是变形。因此返回一个业务实体对象、使用多个out,或者返回数组,你都可以从“是否方便和清晰”的角度去多方使用,看不出有什么纠结的必要。

实际上,针对同一个功能代码,你可以用多种重载方法来封装你的方法。只不过你要理解,这些都是编程伎俩,都离不开同一个功能设计,只不过是比较后期(比较底层)的实现方法不同而已。
------解决方案--------------------
对于返回参数类型一样时,很多人建议用数组,我还是喜欢用类。
我想建议用数组的人,应该是看重数组占用空间小。
但是类也有自己的好处。就是看起来清晰,维护方便。
比如有5个返回参数,如果去掉其中一个参数,很多参数序号就要变,这样改几次后,你就记不清下标2里存的是什么呢。而类没有这样的问题。
------解决方案--------------------
方法返回   return
参数返回  (ref ,out)

自己觉得怎么好就怎么来呗

------解决方案--------------------
这个真心没必要纠结。从便于理解来说数组和类对象好些。效率上会有差别但是这个差别太小,没必要区分。