out参数
用法如下:
out参数侧重于在一个方法中返回多个不同类型的值
值得注意的是:out参数要求必须在方法的内部必须为其赋值
(想在这个平台记录下学习笔记,刚接触C#不久,代码还很不成熟,欢迎各位大佬留言交流)
例子引入:写一个方法,求一个数组中的最大值、最小值、总和、平均值
1 未学out参数前的解决思路:因为要返回四个相同类型的数据,因此想到用数组实现,代码如下:
using System;
using System.Collections.Generic;
using System.Collections;
namespace Start
{
class Program
{
static void Main(string[] args)
{
//写一个方法 求一个数组中的最大值,最小值,总和,平均值
int[] numbers = { 34, 45, 23, 12, 67, 4, 8, 9, 30 };
int[] nums = GetMaxMinSumAvg(numbers);
Console.WriteLine("该组数中的最大值是{0},最小值是{1},总和是{2},平均值是{3}", nums[0], nums[1], nums[2], nums[3]);
}
/// <summary>
/// 计算数组中的最大值,最小值,总和,平均值
/// </summary>
/// <param name="nums">传入要计算的数组</param>
/// <returns>返回存储柚最大值,最小值,总和,平均值的数组</returns>
public static int[] GetMaxMinSumAvg(int[] nums)
{
int[] res = new int[4];
//假设res[0]最大值 res[1]最小值 res[2]总和 res[3]平均值
res[0] = nums[0];
res[1] = nums[0];
res[2] = 0;
res[3] = 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;
}
}
}
结果运行如下:
2 使用out参数来实现这个方法
- )具体用法见下列代码:
using System; using System.Collections.Generic; using System.Collections; namespace Start { class Program { static void Main(string[] args) { //写一个方法 求一个数组中的最大值,最小值,总和,平均值 int[] numbers = { 34, 45, 23, 12, 67, 4, 8, 9, 30 }; int max; int min; int sum; double avg; GetMaxMinSumAvg(numbers, out max, out min, out sum, out avg); Console.WriteLine("该组数中的最大值是{0},最小值是{1},总和是{2},平均值是{3}", max, min, sum, avg); } /// <summary> ///计算一个数组中的最大值,最小值,总和,平均值 /// </summary> /// <param name="nums">传递数组参数</param> /// <param name="max">最大值</param> /// <param name="min">最小值</param> /// <param name="sum">总和</param> /// <param name="avg">平均值</param> public static void GetMaxMinSumAvg(int[] nums, out int max, out int min, out int sum, out double avg) { max = nums[0]; min = nums[0]; sum = 0; avg = 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; } } }
-
)运行结果如下所示