日期:2014-05-20  浏览次数:20742 次

一个函数可不可以返回两个值?下面的这道题目究竟该选什么呢?
有两个函数:

int   fun1(int   a,int   b)
{
      b=++a;
      return   a+b;
}

int   fun2(int   a,out   int   b)
{
      b=++a;
      return   a+b;
}

则下面说法中,正确的是

A.   函数fun1可以返回两个值,函数fun2只能返回一个值
B.   函数fun1只能返回一个值,函数fun2可以返回两个值
C.   函数fun1和fun2都可以返回两个值
D.   函数fun1和fun2只能返回两个值

------解决方案--------------------
这个主要考了 按值传递,按地址传递
按地址传递,传递后,那个函数会修改传入参数

------解决方案--------------------
int fun2(int a,out int b)
{
b=++a;
return a+b;
}
返回值一个是return a+b的值;
一个是out 出的b的值.

测试:
int a = 0;
int b = 0;
int ret fun2(a, out b);
System.Console.WriteLine( "a:{0} b:{1} ", a, b);
------解决方案--------------------
选B..

一个函数当然可以返回两个值,通过ref or out就可以达到目的,以上你的第二个方法就是用到了out..
------解决方案--------------------
同意b是输出值,但觉得输出值不应该叫返回值
------解决方案--------------------
同意老鼠的观点,那怎么能叫返回值呢?!

忽悠人
------解决方案--------------------
对于能不能叫返回两个值,每个人都有自己的理解,或者说在不同的场合理解也应该不一样,感觉有点 "文字游戏 "的味道了...只要大家自己心里清楚就行了..
------解决方案--------------------
按值传递和按地址传递的区别。
------解决方案--------------------
答案應該是D,雖然D同時還有一個輸出參數﹐但是如果把輸出參數也當返回值,概念上應該是不正確的。
因為它不是函數返回的﹐而是在函數過程中改變了輸入的參數值.