先来一个小案例:求最大值、最小值、总和、平均值
static void Main()
{
int[] arr = { 1, 2, 3, 4, 5 };
int[] res = GetSumAgMaxMin(arr);
Console.WriteLine($"最大值为:{res[0]},最小值为:{res[1]},总和为:{res[2]},平均值为:{res[3]}");
Console.ReadLine();
}
/// <summary>
/// 求一个数组值的最大值和最小值、总和、平均数
/// </summary>
/// <param name="value">传入的数组</param>
/// <returns>返回一个数字索引一:最大值,索引二:最小值,索引三:总和,索引四:平均数</returns>
public static int[] GetSumAgMaxMin(int[] value)
{
int[] newArr = new int[4];
newArr[0] = value[0]; // 假设value第一个为最大值
newArr[1] = value[0]; //假设value第一个为最小值
for (int i = 0; i < value.Length; i ++)
{
// 求最大值和最小值
if(newArr[0] < value[i])
{
newArr[0] = value[i];
}
else
{
newArr[1] = value[i];
}
// 求总和
newArr[2] += value[i];
}
// 求平均数
newArr[3] = newArr[2] / value.Length;
return newArr;
}
安装之前的写法,可以把结果放在一个数组中返回,但是有一个问题,如果我们需求是还要返回字符串怎么办?此时上边的板房已经满足不了我们了!
out参数 :
如果你在一个方法中,返回多个相同类型的值时候,可以使用数组,但是如果返回多个不同类型的值时候,返回数组是不行的,那么这个时候,我们可以考虑使用out参数。
该参数可以在一个方法中,可以返回多个不同类型的值,注:使用out时,方法可以无需返回值,但是在方法中必须为其赋值。
我们用 out 来改写上边的小练习:
static void Main()
{
int maxparam;
int minparam;
int sumparam;
int avgparam;
bool boolparam;
int[] arrs = { 1, 2, 3, 4, 5 };
// 调用的时候,括号中的参数前边必须要加上out
GetSumAgMaxMin(arrs, out maxparam, out minparam, out sumparam, out avgparam, out boolparam);
Console.WriteLine($"最大值为:{maxparam},最小值为:{minparam},总和为:{sumparam},平均值为:{avgparam}, 返回的布尔值为:{boolparam}");
Console.ReadLine();
}
/// <summary>
/// 计算数组中最大值,最小值,总和,平均值
/// </summary>
/// <param name="value">传递的数组</param>
/// <param name="max">多余返回的最大值</param>
/// <param name="min">多余返回的最小值</param>
/// <param name="sum">多余返回的总和</param>
/// <param name="avg">多余返回的平均数</param>
public static void GetSumAgMaxMin(int[] value, out int max, out int min, out int sum, out int avg, out bool boolpar)
{
//out方法的内部,必须为其赋值,因为没有返回值,但是最后在外界返接收 out 参数!
max = value[0];
min = value[0];
sum = 0;
boolpar = true;
for (int i = 0; i < value.Length; i ++)
{
if (max < value[i])
{
max = value[i];
}
else
{
min = value[i];
}
sum += value[i];
}
avg = sum / value.Length;
}
小练习二:
判断用户登录的账号和密码是否正确,正确返回:true,提示:登陆成功;否则,false,返回登陆失败
static void Main()
{
Console.WriteLine("请输入账号:");
string admin = Console.ReadLine();
Console.WriteLine("请输密码:");
string pas = Console.ReadLine();
bool isTrue = isLogin(admin, pas, out string msg);
Console.WriteLine($"登陆结果:{isTrue}");
Console.WriteLine($"登陆信息:{msg}");
Console.ReadLine();
}
public static bool isLogin(string name, string password, out string msg)
{
if(name == "admin" && password == "123456")
{
msg = "登陆成功";
return true;
}
else
{
msg = "登录失败";
return false;
}
}