c#基础--方法(复习总结)
概念:
一般在同一个类中,方法名相同,并且方法的参数个数或对应位置上的类型不同,才能构成方法的重载。
注意:方法重载和返回值没有关系,参数的个数或对应位置上的类型相同时,构不成重载
问题:方法只能返回一个值,当需要返回多个值时怎么办?
题:写一个方法,计算一个int类型数组中每个元素的总和 和 最大值与最小值?
该题需要返回3个参数,分别是sum(总和),max(最大值),min(最小值)
代码实现:
using System; namespace outref { class Program { static void Main(string[] args) { int[] arrTemp = { 12,32,11,2,54,24,86,99,12,98}; int max; int min; int sum = TestOut(arrTemp,out max,out min); Console.WriteLine("和={0},最大值={1},最小值={2}",sum,max,min); Console.ReadLine(); } public static int TestOut(int[] arrTemp,out int max, out int min) { int sum = 0; max = arrTemp[0]; min = arrTemp[0]; for (int i = 0; i < arrTemp.Length; i++) { sum = sum + arrTemp[i]; if (max < arrTemp[i]) { max = arrTemp[i]; } if (min > arrTemp[i]) { min = arrTemp[i]; } } return sum; } } } 执行结果:
实现步骤:
1.在方法的参数类型前加 out,那么传参数的时候,也 必须在调用该方法的参数前加out,表明这个参数不是传入的,而是用来传出值的。
2.如果参数是以out形式传入的,那么在传入前可以不赋初值
3.在方法中对于由out修饰的参数,必须赋值,并且必须在使用前赋值。
练习:写一个MyTryParse方法,要求用户传入一个字符串,如果这个字符串能转换成int类型,则方法返回true,并且转换后的int类型数据数据通过方法的参数传出,如果字符串不能转换成int类型,则方法返回false
代码实现:
using System; using System.Collections.Generic; using System.Text; namespace MyTryParse { class Program { static void Main(string[] args) { int result; Console.WriteLine("请输入待转换的字符:"); string strTemp = Console.ReadLine(); bool isParse = MyTryParse(strTemp,out result); int.TryParse(strTemp,out result); if (isParse == true) { Console.WriteLine("转换成功!转换后的值为:{0}", result); } else { Console.WriteLine("转换失败!"); } } public static bool MyTryParse(string strTemp, out int result) { result = 0; try { result = Convert.ToInt32(strTemp); return true; } catch { return false; } } } }
out就是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所
ref与out的区别
out用于传出值,ref可以理解成双向的,既可以传入,又可以传出,在传参前,必须先赋初值
在传参数的过程中,如果参数有out或ref修饰的话,那么改变方法中的参数变量的值,调用者方法中变量的值也会相应改变。
浙公网安备 33010602011771号