标签:
这一篇,我们来学习C#中的方法——函数
1. 方法的功能
方法的功能:用来复用代码的,当我们在一个程序中反复的写了同样的代码,我们就可以把需要重复写的代码定义在一个方法中,用到的时候只需要调用就可以了。这样做也是对代码的封装。
定义方法的语法:
[访问修饰符] [static] 返回值类型 方法名([参数列表])
{ 方法体; }
2. 要注意的地方
1. 方法可以拥有一个或多个参数,或者没有任何参数。参数列表中的参数相当于方法中的局部变量。
2. 如果方法没有返回值的话,返回值类型为void,每个方法只有一个返回值(如果要返回多个值,可以返回一个数组或者通过参数来返回);但构造方法和析构方法例外,不允许有任何返回值。
3. 方法中只要遇到return,立即退出方法,如果try…cathy…finally,在try里面若遇到return,finally依然会执行。
3. 方法返回多个值的例子
a) 用数组返回多个值
static int[] Sum(int numA, int numB) { int sum = numA + numB; int sub = numA - numB; int[] arrRes = new int[2]; arrRes[0] = sum; arrRes[1] = sub; return arrRes; }
b)用out关键字创建输出参数,返回多个值
因为使用out修饰参数后,传递的是参数的地址,所以我们对形参进行的修改会影响到实参。
如果在方法内,没有对被out修饰的参数进行赋值,则编译会报错:“ 离开当前方法之前必须对 out 参数赋值 ”。
int numA = 10, numB = 7; int sum, sub; sum = Test(numA, numB, out sub);//通过参数来返值 Console.WriteLine("sum = {0} sub = {1}", sum, sub); //sum = 17 sub = 3 static int Test(int a, int b,out int sub) { //在没有对sub进行赋值之前,不能使用它 //sub += 1; 错误,使用了未赋值的 out 参数“sub” //sub = 1; 正确,为sub赋值 sub = a - b; int sum = a + b; return sum; }
c) out 与 ref 的区别:
out 只有传出的功能,在方法内必须赋值;ref 可以传入和传出,侧重传入,在调用方法前必须赋值。
C#通过ref这个关键字,屏蔽了C++中的指针
int x = 2, y = 3; int mul = 0; Fun(x, y, ref mul); Console.WriteLine("mul = {0}", mul); // mul = 6 static void Fun(int x,int y, ref int mul) { mul = x * y; }
4. 方法中的可变参数
Console.WriteLine(“a = {0}, b = {1}” , 0 , 1) 中可以允许有多个参数。
public static void WriteLine(string format, params object[] arg);
上面方法中的两个参数接受的值分别是:“a = {0}, b = {1}” , 一个object类型的数组 arg={0,1}
params 的作用就是将多个参数组合成一个数组怕;如果可变参数不传的话,可变参数就是一个长度为0的数组对象。
被params 修饰的参数必须放在方法中参数列表的最右端
static void Main(string[] args) { int[] arrAge = { 1, 2, 3, 4, 5, 5, 67 }; ParamesTest("刘德华", arrAge);//可变参数可以直接传递数组对象进去 ParamesTest("刘德华", 1, 2, 3);//可变参数也可以单个的传递值 ParamesTest("刘德华");//可变参数可以不传,那么方法中的可变参数形参就是一个Length=0的数组对象 Console.ReadLine(); } static void ParamesTest(string name, params int[] ages)//可变参数必须放在方法参数列表的最后一个 { Console.WriteLine("您好?~~{0}", name); Console.WriteLine("ages==null:" + ages == null); Console.WriteLine("ages.Length=" + ages.Length); foreach (int age in ages) { Console.WriteLine("当前循环到的age=" + age); } Console.WriteLine(); }
输出:
5. 方法的重载
一般在同一个类中,方法名相同,方法的参数列表不同,才能构成方法的重载。
注意:方法的重载与返回值没有关系。
例如,Console.WriteLine的重载
标签:
原文地址:http://www.cnblogs.com/lcxBlog/p/4506955.html