out参数()-其他
out参数()
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组
示例:
using System;
namespace out参数
{
class Program
{
static void Main(string[] args)
{
//写一个方法,求一个数组中的最大值、最小值、总和、平均值
int[] numbers = {1,2,5,8,9,2};
//将要返回的4个值,放到一个数组中返回
int[] res= MaxMinSumAvg(numbers);
Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}",res[0],res[1],res[2],res[3]);
Console.ReadKey();
}
public static int[] MaxMinSumAvg(int[] nums)
{
//假设res[0] 最大值,res[1] 最小值,res[2] 总和,res[3] 平均值
int[] res = new int[4];
res[0] = nums[0];
res[1] = nums[0];
res[2] = 0;
for (int i = 0; i < nums.Length; i++)
{
//如果当前循环到的元素比我假定的最大值还大
if (nums[i] >res[0])
{
//将当前循环到的元素赋值给我的最大值
res[0] = nums[i];
}
if (nums[i] <res[1])
{
res[1] = nums[i];
}
res[2] += nums[i];
}
res[3] = res[2] / nums.Length;//平均值
return res;//返回数组
}
}
}
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们考虑使用out参数,
out参数:可以在一个方法返回多个不同类型的参数,out表示我要多余返回的那个参数
示例:
using System;
namespace out参数
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1, 3, 5, 7, 9 };
//Test函数调用时需要几个int类型的变量实参,但main方法里并没有,所有要定义几个变量作为实参用。 //这几个参数可以不给它赋值,因为out方法里面已经赋过值了。
int max;
int min;
int sum;
int avg;
Test(numbers, out max, out min, out sum, out avg);
Console.WriteLine(max);
Console.WriteLine(min);
Console.WriteLine(sum);
Console.WriteLine(avg);
Console.ReadKey();
}
//这个Test方法并没有返回值,我使用out参数多余返回了4个参数
public static void Test(int[] nums,out int max,out int min,out int sum,out int avg)
{
//out参数要求在方法的内部必须为其赋值、
max = nums[0];
min = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]>max)
{
max = nums[i];
}
if (nums[i]<min)
{
min = nums[i];
}
sum += nums[i];
}
avg = sum / nums.Length;
}
}
}
————————
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组
示例:
using System;
namespace out参数
{
class Program
{
static void Main(string[] args)
{
//写一个方法,求一个数组中的最大值、最小值、总和、平均值
int[] numbers = {1,2,5,8,9,2};
//将要返回的4个值,放到一个数组中返回
int[] res= MaxMinSumAvg(numbers);
Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}",res[0],res[1],res[2],res[3]);
Console.ReadKey();
}
public static int[] MaxMinSumAvg(int[] nums)
{
//假设res[0] 最大值,res[1] 最小值,res[2] 总和,res[3] 平均值
int[] res = new int[4];
res[0] = nums[0];
res[1] = nums[0];
res[2] = 0;
for (int i = 0; i < nums.Length; i++)
{
//如果当前循环到的元素比我假定的最大值还大
if (nums[i] >res[0])
{
//将当前循环到的元素赋值给我的最大值
res[0] = nums[i];
}
if (nums[i] <res[1])
{
res[1] = nums[i];
}
res[2] += nums[i];
}
res[3] = res[2] / nums.Length;//平均值
return res;//返回数组
}
}
}
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候我们考虑使用out参数,
out参数:可以在一个方法返回多个不同类型的参数,out表示我要多余返回的那个参数
示例:
using System;
namespace out参数
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1, 3, 5, 7, 9 };
//Test函数调用时需要几个int类型的变量实参,但main方法里并没有,所有要定义几个变量作为实参用。 //这几个参数可以不给它赋值,因为out方法里面已经赋过值了。
int max;
int min;
int sum;
int avg;
Test(numbers, out max, out min, out sum, out avg);
Console.WriteLine(max);
Console.WriteLine(min);
Console.WriteLine(sum);
Console.WriteLine(avg);
Console.ReadKey();
}
//这个Test方法并没有返回值,我使用out参数多余返回了4个参数
public static void Test(int[] nums,out int max,out int min,out int sum,out int avg)
{
//out参数要求在方法的内部必须为其赋值、
max = nums[0];
min = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]>max)
{
max = nums[i];
}
if (nums[i]<min)
{
min = nums[i];
}
sum += nums[i];
}
avg = sum / nums.Length;
}
}
}