C#基础知识(七)——方法重载与out、ref、params参数
2016-07-24 21:40
645 查看
1、方法重载:
方法名相同,但是参数不同,参数的个数不同,类型也不同。方法的重载和返回值无关,和参数的类型和个数有关。
规则:如果参数个数不同,就不管它的参数类型了;如果参数个数相同,那么参数的类型必须不同。
例子:
2、方法的out参数和ref参数
(1)out参数:
out是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。
注意:如果方法的参数用out修饰了,那么在方法外面可以不给这个参数赋值,但是在方法里面必须给这个参数进行赋初值。另外,参数加out,是把这个方法中的参数的值传到方法外面去了。
例子:
ref用的时候必须给这个变量赋初值,和out有区别。out可以把方法里的值传出去;ref可以把值传到方法里,又可以把值传到方法外面。
例子:
用处:可以让在方法里放很多参数。
例子:
比较:
out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。params可变参数必须是形参列表中的最后一个元素。
方法名相同,但是参数不同,参数的个数不同,类型也不同。方法的重载和返回值无关,和参数的类型和个数有关。
规则:如果参数个数不同,就不管它的参数类型了;如果参数个数相同,那么参数的类型必须不同。
例子:
<span style="font-family:SimSun;">//求两个数的和、最大值、最小值 static void Main(string[] args) { int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] arrayNumbers = ArraySumAndMaxOrMin(nums); Console.WriteLine("最大值为{0}", arrayNumbers[0]); Console.WriteLine("最小值为{0}", arrayNumbers[1]); Console.WriteLine("和为{0}", arrayNumbers[2]); Console.ReadKey(); } public static int[] ArraySumAndMaxOrMin(int[] numbers) { int[] array = new int[3]; array[0] = int.MinValue; array[1] = int.MaxValue; array[2] = 0; for (int i = 0; i < numbers.Length; i++) { if (numbers[i] > array[0]) { array[0] = numbers[i]; } if (numbers[i] < array[1]) { array[1] = numbers[i]; } array[2] += numbers[i]; } return array; }</span>
2、方法的out参数和ref参数
(1)out参数:
out是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所。
注意:如果方法的参数用out修饰了,那么在方法外面可以不给这个参数赋值,但是在方法里面必须给这个参数进行赋初值。另外,参数加out,是把这个方法中的参数的值传到方法外面去了。
例子:
<span style="font-family:SimSun;">//显示num1值,num2值,numSum的值 static void Main(string[] args) { int num1; int num2 = 80; int numSum = Show(out num1, num2); //如果方法的参数用out修饰了,那么在方法外面可以不给这个参数赋值,但是在方法里面必须给这个参数进行赋初值。 //另外,参数加out,是把这个方法中的参数的值传到方法外面去了。<span style="font-size:18px;"></span> Console.WriteLine(num1);//90 Console.WriteLine(num2);//80 Console.WriteLine(numSum);//100 Console.ReadKey(); } public static int Show(out int number1,int number2) { number1=90; return number1+10; }</span>(2)ref参数:
ref用的时候必须给这个变量赋初值,和out有区别。out可以把方法里的值传出去;ref可以把值传到方法里,又可以把值传到方法外面。
例子:
<span style="font-family:SimSun;">// static void Main(string[] args) { int number1 = 10; int number2 = 20; int sum = show(ref number1, ref number2); Console.WriteLine("{0},{1},{2}",number1,number2,sum);//100,200,300 Console.ReadKey(); } public static int show(ref int num1, ref int num2) { num1 = 100; num2 = 200; return num1 + num2;</span>(3)params参数:
用处:可以让在方法里放很多参数。
例子:
class Program { public static void Show(string str,params object[]strs) { } static void Main(string[] args) { Console.WriteLine("{0}{1}{2}{3}{4}{5}{6}{7}",1,2,3,4,5,6,7,8); Show("{0}{1}{2}{3}{4}{5}{6}{7}{8}",1,"2",3,4,5,6,7,8,9); } }
比较:
out、ref、params
1)、out参数。
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
2)、ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再讲改变后的值带出方法。ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
3)、params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。params可变参数必须是形参列表中的最后一个元素。
相关文章推荐
- C# 多线程调用控件
- [转] c# 操作Word
- C#中转义字符
- C#获取URL参数值
- C# ToolStrip 控件的动态生成
- C#基础-4:结构
- 读CLR via C#笔记
- [转] C#中out和ref之间的区别
- C#如何获得动态生成的控件
- C#关键字—yield
- C# 获取当前路径7种方法
- C# 枚举尚未开始,或者已经结束
- 转载:C# 将引用的DLL文件放到指定的目录下
- c#的线程池,第一次用
- C#将wps表格读到datatable中并显示在页面
- c# 之 timer 实战
- 小结:c# setter属性注入
- 小结:c#Constructor构造函数注入
- C# 打造文件加密解密工具
- C#使用Log4Net记录日志