C# 编程入门第七课
文章目录
1. 方法调用参数问题
我们在Main()
函数中,调用Test()
函数,我们管Main()
函数称之为调用者,
管Test()
函数称之为被调用者。
如果被调用者想要得到调用者的值:
1)、传递参数。
2)、使用静态字段来模拟全局变量。
如果调用者想要得到被调用者的值:
1)、返回值
Test() 函数定义的变量是局部变量
静态字段相当于C中的全局变量。
//静态字段 一般定义为类的字段
public static int _number = 10;
2. 方法标准
方法的功能一定要单一。
GetMax(int n1,int n2)
方法中最忌讳的就是出现提示用户输入的字眼。尽量放在Main函数
3.传递数组,返回数组
public static int[] Fun(int[] nums)
{
}
4. 方法高级参数
4.1 out 关键字参数
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
namespace _08使用out参数做登陆
{
class Program
{
static void Main(string[] args)
{
//提前定义msg,n
string msg;
int n
bool b = Fun_2(name, pwd, out msg,out n);
}
public static bool Fun_2(string name, string pwd,out string msg, out int number)
{
msg = "ABC";
number = 12;
return true;
}
}
}
可以看到,除了return返回,还通过out参数返回 msg,后面还可以定义很多out参数
注意:out参数要求传入的参数要提前定义,函数内部的out参数一定要被赋值
4.2 ref 参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。(类似与C语言的指针传址)
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
class Program
{
static void Main(string[] args)
{
double salary = 5000;//在外面必须赋值
JiangJin(ref salary);
Console.WriteLine(salary);//salary变成5500
Console.ReadKey();
}
public static void JiangJin(ref double s)
{
s += 500;
}
}
4.3 params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数必须是形参列表中的最后一个元素。
class Program
{
static void Main(string[] args)
{
Test("张三", 99, 100, 100, 100);
Console.ReadKey();
}
public static void Test(string name, int id, params int[] score)
{
int sum = 0;
for (int i = 0; i < score.Length; i++)
{
sum += score[i];
}
Console.WriteLine("{0}这次考试的总成绩是{1},学号是{2}", name, sum, id);
}
}
5.方法重载
概念:方法的重载指的就是方法的名称相同给,但是参数不同。
参数不同,分为两种情况
1)、如果参数的个数相同,那么参数的类型就不能相同。
2)、如果参数的类型相同,那么参数的个数就不能相同。
***方法的重载跟返回值没有关系。
static void Main(string[] args)
{
int n = M(3, 4,7);
Console.WriteLine(n);
Console.ReadKey();
}
public static int M(int a1, int a2)
{
return a1 + a2;
}
public static double M(double d1, double d2)
{
return d1 + d2;
}
public static int M(int n1, int n2, int n3)
{
int result = n1 + n2 + n3;
return result;
6. 方法的递归
方法自己调用自己。
例如找出一个文件夹中所有的文件。
7. 一些常用方法
字符串长度
string s = "ABCD"; int n = s.Length; //s的长度为4
保留两位小数
double d = 3.33888; string s = d.ToString("0.00"); d = Convert.ToDouble(s); //d变成3.34(会四舍五入)
不够两位数保持原数。