关于C#中out参数的使用
关于C#中out参数的使用
out 关键字通过引用传递参数。 它让形参成为实参的别名,这必须是变量。 换而言之,对形参执行的任何操作都是对实参执行的。 它与 ref 关键字相似,只不过 ref 要求在传递之前初始化变量。
下面介绍两个例子来加深理解out参数。
#1.使用out参数,计算一个数组的最大值,最小值,总和,平均值
using System;
namespace out参数
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1,2,3,4,5,6,7,8};
int max = 0;
int min = 0;
int sum = 0;
int avg = 0;
bool b;
string s;
test(numbers,out max,out min,out sum,out avg,out b,out s);
Console.WriteLine(max);
Console.WriteLine(min);
Console.WriteLine(sum);
Console.WriteLine(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 test(int[] nums,out int max,out int min,out int sum,out int avg,out bool b,out string s) {
//out参数在方法内部必须为其赋值
max = nums[0];
min = nums[1];
sum = 0;
avg = 0;
b = true;
s = "qwe";
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];
}
avg = sum / nums.Length;
}
}
}
运行结果如图:
需要注意两点:
1.out参数在方法内部必须为其赋值
2.调用方法时,相应的参数必须加上out
#2使用out参数写一个登录小案例
using System;
namespace 使用out参数登录
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("username;");
string username = Console.ReadLine();
Console.WriteLine("password;");
string password = Console.ReadLine();
string msg;
bool b= IsLogin(username,password,out msg);
Console.WriteLine(b+" "+msg);
}
public static bool IsLogin(string userName,string pwd,out string msg)
{
if (userName == "admin" && pwd == "123")
{
msg = "登录成功";
return true;
}
else if (userName == "admin")
{
msg = "密码错误";
return false;
}
else if (pwd == "123")
{
msg = "用户名错误";
return false;
}
else {
msg = "未知用户";
return false;
}
}
}
}
运行结果如图:
这个登录方法要返回两个值,一个bool类型的,表示是否登录成功。一个string类型的,用于返回详细登录信息。所以用到了out。