一个函数可不可以返回两个值?下面的这道题目究竟该选什么呢?
有两个函数:
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同時還有一個輸出參數﹐但是如果把輸出參數也當返回值,概念上應該是不正確的。
因為它不是函數返回的﹐而是在函數過程中改變了輸入的參數值.