标题: 方法问题 [打印本页] 作者: 张松 时间: 2013-8-17 22:13 标题: 方法问题 public static int GetSum(int[] nums, out int max, out int min)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
max = nums[0];
min = nums[0];
if (max <nums[i])
{
max = nums[i];
}
if (min > nums[i])
{
min = nums[i];
}
sum += nums[i];
}
return sum;
}
谁能解释一下vs为何报错:控制离开当前方法之前必须对out参数max,min赋值。 作者: hourglass 时间: 2013-8-17 23:25
因为当你传入的数组nums的长度为0时, for里面的内容将不会执行, 也就是说max和min没有被赋值, 而对于声明out的变量, 在方法结束时,必须对其进行初始化,所以VS会报错。 你可以将out改为ref, 或在执行for之前, 对max和min进行初始化。作者: 小天 时间: 2013-8-18 00:39
public static int GetSum(int[] nums, out int max, out int min)
{
int sum = 0;
max = nums[0];//对参数max赋值
min = nums[0];//对参数min赋值
for (int i = 0; i < nums.Length; i++)
{
if (max < nums[i])
{
max = nums[i];
}
if (min > nums[i])
{
min = nums[i];
}
sum += nums[i];
}
return sum;
}
1.out和ref引用参数的相同点:都是通过引用传递参数给函数;
2.out和ref引用参数的不同点是:用ref引用传递参数,该参数必须经过初始化,并且不能在调用它的函数中初始化;用out引用传递参数,该参数要在调用它的函数中初始化
3.使用out引用多个参数来返回多个值,这允许方法任意地返回需要的值
4.如果一个方法使用ref引用参数,另一个方法使用out引用参数,则这两个相同方法名的函数不能重载,否则出现编译错误 作者: §風過無痕§ 时间: 2013-8-18 00:42 本帖最后由 §風過無痕§ 于 2013-8-18 00:46 编辑
亲 这是我更改过的代码 请再测试一遍看看
public static int GetSum(int[] nums, out int max, out int min)