1.在main()中调用test();
如果被调用者想要得到调用者的值,
1)传递参数
2)使用静态字段来模拟全局变量。
如果调用者想要得到被调用者的值
1)返回值
2.out参数的使用
/// <summary>
/// 判断用户输入信息的对错,并输出错误信息
/// </summary>
/// <param name="username"></param>
/// <param name="pwd"></param>
/// <param name="msg">输出参数</param>
/// <returns></returns>
static bool UserNameAndPwd(string username , string pwd , out string msg)
{
//Console.WriteLine("请输入您的用户名");
//username = Console.ReadLine();
if(username=="jefy"&&pwd == "88888888")
{
msg = "login success !!";
Console.WriteLine(msg);
return true;
}
else if(username == "jefy")
{
msg = " pwd login fail";
Console.WriteLine(msg);
return false;
}
else if (pwd == "88888888")
{
msg = " username login fail";
Console.WriteLine(msg);
return false;
}
else
{
msg = "elsesomething fail";
Console.WriteLine(msg);
return false;
}
}
out参数用于接收方法中运算后的结果,因此在调用函数中可以不用赋初始值。
如果在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组,但是,如果返回多个不同类型的值的时候,要使用out参数来实现。
3.ref参数 (特例:实现两个数的交换)
/// <summary>
/// //利用ref参数实现交换两个数的值
/// </summary>
/// <param name="data1"></param>
/// <param name="data2"></param>
static void ExchValue(ref int data1 ,ref int data2)
{
int temp = data1;
data1 = data2;
data2 = temp;
}
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。ref参数,在调用函数中定义时,必须要赋初始值。
4.param 可变参数 params修饰的形参只能用在形参列表的最后一个,且一个形参列表中只能出现一个params.
params 将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。//求可变数组长度的和
int sum = 0;
GetArrSum(out sum, 1, 2, 3, 4, 5, 6, 7, 8, 9);
Console.WriteLine(sum);
static void GetArrSum(out int sum ,params int []arr)
{
sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
}
5.方法的重载 F12转到定义 即:源代码
概念:方法的名称相同,方法的参数不同。
参数不同:
1)参数的个数相同,则参数的类型不能相同
2)参数的类型相同,则参数的个数不能相同
且方法的重载和返回类型没有关系。
//方法的重载
1) void M(int n1)
{ }
2) int M(double n1)
{ return 0; }
3) double M(int n1 , int n2)
{ return 0; }
4) string M(string str)
{
return str;
}
6.方法的递归
概念:方法自己调用自己