下面分别对out和ref的使用方法根据实例进行说明
第一个实例中,自己写MyTryParse方法,采用out关键字返回转换成功后int数值number。
/// <summary>
/// 写MyTryParse熟悉out关键字用法
/// </summary>
/// <param name="str">字符串</param>
/// <param name="number">转换后输出值</param>
/// <returns>是否转换成功</returns>
public static bool MyTryParse(string str, out int number)
{
bool isOk = false;
number = 0;
try
{
number = Convert.ToInt32(str);
isOk = true;
}
catch
{
}
return isOk;
}
此函数实现功能与int.TryParse方法形同,将输入的字符串转换为int类型,若是转换成功,返回bool类型true,并同时返回转换后的int数值,若是转换失败,返回bool类型false,默认转换后数值为0。
此例子采用out关键字将转换后的数值进行返回,在一个函数中,实现了返回多个返回值。
第二个实例中,写FaKuan方法,要求罚款时,要求当月工资减500,同时年终奖减1000,函数调用完成后主函数变量值发生改变。
static void Main(string[] args)
{
double salary = 5000;
double nianZhongJiang = 20000;
FaKuan(ref salary, ref nianZhongJiang);
Console.WriteLine(salary);
Console.WriteLine(nianZhongJiang);
Console.ReadKey();
}
/// <summary>
/// 此函数定义罚款规则,工资减500,同时年终奖减1000
/// </summary>
/// <param name="s"></param>
/// <param name="nzj"></param>
public static void FaKuan(ref double s, ref double nzj)
{
s -= 1000;
nzj -= 1000;
}
通过使用ref关键字后,成功实现调用函数中变量值改变,ref的功能为将实参带入方法,方法运行结束后将值再带回调用函数。
|