【C#】方法的简单介绍
——————————————————————————————————————————————
方法介绍
函数是将一堆代码进行重用的一种机制,有了方法就便于写代码。
方法的定义(有static就是静态方法)
命名规则:方法名开头大写,参数名开头小写,参数名、变量名要有意义。
方法的调用:对于静态方法,调用有两种方法
如果在同一个类中,直接写名字调用就可以了,或者是写类名.方法名();
第二种方法就是使用program来调用。
return可以立即退出方法。
方法有无参数和返回值
//最简单的方法无参无返回值
string str = Console.ReadLine();
int num = Convert.ToInt32("3");//int变量来接收返回值
bool result = int.TryParse("3", out num);//用bool类型来接收返回值,有两个参数,一个是字符串类型,一个是out num 。
Console.ReadLine();//此方法没有参数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
//方法有参数有返回值
Console.WriteLine("请输入第一个数");
int number1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入第二个数");
int number2 = Convert.ToInt32(Console.ReadLine());
int max=Show(number1,number2);
Console.WriteLine("最大值就是这个数,我自己怎么写都可以 {0}", max);
Console.ReadKey();
}
/// <summary>
/// 此方法用来比较两个数的大小,返回的是最大值
/// </summary>
/// <param name="num1">用户比较的第一个数</param>
/// <param name="num2">用户比较的第二个数</param>
/// <returns>返回的是最大值</returns>
public static int Show(int num1, int num2)
{
//int number = num1 > num2 ? num1 : num2;
return num1 > num2 ? num1 : num2;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
局部变量和传参
变量的作用域(局部变量)
在方法中定义的变量称为局部变量,其作用域从定义开始,到其所在的大括号结束为止。
一个方法中访问另一个方法中的变量,实现办法:
第一种方法:传参数的方法
static void Main(string[] args)
{
int number = 90;
Test(number);//通过传参数
}
//通过传参数可把一个方法的值传递到另一个方法中,进行使用。
public static void Test(int num)
{
num = num + 3;
Console.WriteLine(num);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
第二种方法:返回值
用返回值来判断是否是闰年,判断一个年份是否是闰年,方法中有return语句,导致函数立即返回,在返回值为void的函数中return,在返回值非void的函数中return值。
#region 写一个方法,判断一个年份是否是闰年
//这种方法会有一些繁琐,但是分段写,这样各专其职,会比较清晰。
static void Main(string[] args)
{
Console.WriteLine("请输入年份");
string str = Console.ReadLine();
int yearInt = Convert.ToInt32(str);//报异常
bool result = Isyear(yearInt);//使用bool类型的值来接收返回值
if (result)
{
Console.WriteLine("是闰年");
}
else
{
Console.WriteLine("是平年");
}
Console.ReadKey();
}
public static bool Isyear(int year)
{
//下面的函数表达式显示的是闰年的计算
if (year%400==0||year%4==0&&year%100!=0)
{
return true;
}
else
{
return false;
}
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
#region 写一个方法,判断一个年份是否是闰年
//这种方法会有一些繁琐,但是分段写,这样各专其职,会比较清晰。
//写一个方法,传过去的是字符串,返回的是数值
static void Main(string[] args)
{
Console.WriteLine("请输入年份");
//string str = Console.ReadLine();
//int yearInt = Convert.ToInt32(str);//报异常
int yearInt = OutPutNumber(Console.ReadLine());
//OutPutNumber(Console.ReadLine());
bool result = Isyear(yearInt);//使用bool类型的值来接收返回值
//有个方法,穿过去一个字符串,返回的是一个数字;
if (result)
{
Console.WriteLine("是闰年");
}
else
{
Console.WriteLine("是平年");
}
Console.ReadKey();
}
public static bool Isyear(int year)
{
//下面的函数表达式显示的是闰年的计算
if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
{
return true;
}
else
{
return false;
}
}
public static int OutPutNumber(string strNumber)
{
while (true)
{
try
{
int number = int.Parse(strNumber);
return number;
}
catch
{
Console.WriteLine("输入错误,请重新输入");
strNumber = Console.ReadLine();
}
}
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
方法的重载
方法的重载:参数类型不同或参数个数不同,与返回值无关。
Console.WriteLine();的参数可以是字符串类型也可以是数字类型的,还可以是布尔类型的,这就是运用了方法的重载。
#region 方法的重载
//计算两个数的和,第一个数是整数,第二个数是整数,这个方法的功能就是求两个数的和
//方法的重载 方法名相同,参数不同或者是参数的个数不同,类型也不同
//和返回值无关,和参数的类型和个数有关系
}
public static int AddNumber(int num1,int num2)
{
return num1 + num2;
}
public static double AddNumber(double num1,double num2)
{
return num1 + num2;
}
public static double AddNumber(double num1,double num2,double num3)
{
return num1 + num2+num3 ;
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
out传值和ref传值
函数参数默认是值传递,也就是复制一份。
out修饰方法的参数,那么在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out修饰符的参数赋初值。
另外,参数加out,是把这个方法中的参数的值传到方法外面去了。out一般用在函数需要多个返回值的场所。
ref 用到时候必须给变量赋初值,和out有区别,out可以把方法里面的值传出去。ref可以把值传到方法里面,又可以把值传到方法外面。
#region out传值
int num1 = 10;
int num2 = 80;
int numSum = Show( out num1,num2);
Console.WriteLine(num1);//结果为90
Console.WriteLine(num2);
//out修饰方法的参数,那么在方法外面,可以不给这个参数赋值,但是在方法里面必须给这个out修饰符的参数赋初值
//另外,参数加out,是把这个方法中的参数的值传到方法外面去了。
Console.ReadKey();
}
public static int Show(out int number1,int number2)
{
number1 = 90;
return number1 + 10;
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
#region ref传值
//ref 用到时候必须给变量赋初值,和out有区别,out可以把方法里面的值传出去。
//ref可以把值传到方法里面,又可以把值传到方法外面;
int number1 = 10;//使用ref之后,这里必须赋初值,但是使用out的时候,可以不必赋初值
int number2 = 20;
int sum = Show(ref number1,ref number2);
//Console.WriteLine("{0}{1}{2}", number1, number2, sum);//结果显示102030
Console.WriteLine("{0},{1},{2}", number1, number2, sum);//下面对num1和num2 进行重新赋值,最后的结果为100,200,300
//使用Ref必须赋初值
Console.ReadKey();
}
public static int Show(ref int num1,ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
#region ref返回多个值
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int max = 0;
int min;
int sum = ArraySum(nums, out max, out min);
}
public static int ArraySum(int[] numbers, out int max, out int min)
{
max = int.MinValue;
min = int.MaxValue;
int sum = 0;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] > max)
{
max = numbers[i];
}
if (numbers[i] < min)
{
min = numbers[i];
}
sum += numbers[i];
}
return sum;
#endregion
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
方法总结
public static void show()
//无返回值无参数
public static int show()
//有返回值,int类型的
public static int show(int num)
//有返回值,int类型的,有参数,int类型的
public static int show(out int num)
//有两个返回值
public static int show(out int num,ref string str)
//有三个返回值
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Laura__zhang/article/details/110392389
- 点赞
- 收藏
- 关注作者
评论(0)