方法中的参数(out参数)
1、out参数
(1)使用数组返回多个值(同一类型)
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 函数中参数
{
class Program
{
static void Main(string[] args)
{
//定义一个函数,返回数组中的最大、最小值、平均值、总和
int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 };
int[] res=GetMaxMinAvgeSum(nums);
Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3}", res[0], res[1], res[3], res[2]);
Console.ReadKey();
}
//将要返回的多个值放在一个数组中返回
public static int[] GetMaxMinAvgeSum(int[] nums) //返回值为一个数组
{
int[] result = new int[4]; //要返回的数组定义
//假设result[0]存放最大值,result[1]存放最小值,result[2]存放平均值,result[3]存放总和
result[0] = nums[0]; //假设最大值为数组中的第0个元素
result[1] = nums[0]; //假设最小值为数组中的第0个元素
result[2] = 0; //平均值
result[3] = 0; //总和
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] > result[0]) //进行最大值求取
{
result[0] = nums[i];
}
if (nums[i] < result[1]) //进行最大值求取
{
result[1] = nums[i];
}
result[3] += nums[i]; //求总和
}
result[2] = result[3] / nums.Length; //求平均值
return result; //返回数组
}
}
}
运行结果
(2)返回多个值(属于不同类型)
当返回多个值时,每个值属于不同的类型,则不能使用数组返回。可以使用out参数,out参数可以用于在一个方法中返回多个不同类型的值。
实例1----代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 函数中参数
{
class Program
{
static void Main(string[] args)
{
//定义一个函数,计算数组中的最大、最小值、平均值、总和
int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 };
int max=0;
int min=0;
int sum=0;
int avg=0;
Test(nums, out max, out min, out sum, out avg);
Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3}", max, min, sum, avg);
Console.ReadKey();
}
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; //求平均值
}
}
}
运行结果:
实例2----代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 函数中参数 { class Program { static void Main(string[] args) { //定义一个函数,计算数组中的最大、最小值、平均值、总和 int[] nums = { 1, 3, 24, 5, 6, 7, 12, 9 }; int max=0; int min=0; int sum=0; int avg=0; bool b; string s; double d; Test(nums, out max, out min, out sum, out avg,out b,out s,out d); Console.WriteLine("最大值为:{0},最小值为:{1},总和为:{2},平均值为:{3},b:{4},s:{5},d:{6}", max, min, sum, avg,b,s,d); Console.ReadKey(); } public static void Test(int[] nums,out int max,out int min,out int sum,out int avg,out bool b,out string s,out double d) { //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; //求平均值 //必须对剩余的参数赋值 b = true; s = "Hello"; d = 0.45; } } }
运行结果:
实例2----代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace out参数使用 { class Program { static void Main(string[] args) { //分别提示用户输入用户名和密码 //定义个方法来判断用户输入的是否正确,返回登录的结果,并返回用户的登录信息 Console.WriteLine("请输入用户名:"); string username = Console.ReadLine(); Console.WriteLine("请输入密码:"); string userpwd = Console.ReadLine(); string str_msg; bool s = IsLogin(username, userpwd, out str_msg); Console.WriteLine("登录结果为:{0}\n登录信息:{1}\n", s, str_msg); Console.ReadKey(); } //方法定义,msg是返回的信息 public static bool IsLogin(string name, string pwd, out string msg) { if (name=="admin" && pwd=="8888") { msg = "登录成功"; return true; } else if (name == "admin") { msg = "密码错误"; return false; } else if (pwd=="8888") { msg = "用户名错误"; return false; } else { msg="未知错误"; return false; } } } }
运行结果: