out 、ref、params
1.out参数
在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组,但是如果返回多个不同类型的值的时候,返回数组就不行,那么这个时候可以考虑用out参数。
out参数侧重于在一个方法中可以返回多个不同类型的值。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Collections; using System.Threading.Tasks; namespace test { public class myclass { public static void test( int[] nums,out int max ,out int min,out int avg,out string str) { max=nums[0]; min = nums[0]; avg = 0; str = "xiaomin";//out参数必须在方法内赋值 for (int i = 0; i < nums.Length;i++ ) { if (nums[i] > max) { max = nums[i]; } if (nums[i] < min) { min = nums[i]; } avg += nums[i]; } avg = avg / nums.Length; } static void Main() { int[] s = {1,2,3,4,5,6,7,8,9}; int max1; int min1; int avg1; string str1; test(s,out max1,out min1, out avg1,out str1); Console.WriteLine(max1); Console.WriteLine(str1); Console.ReadKey(); } } }
2.ref参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后值带出去。
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Collections; using System.Threading.Tasks; namespace test { public class myclass { public static int test(ref int num) { num = 100 + num; return num; } static void Main() { int s = 100; test(ref s); Console.WriteLine(s); Console.ReadKey(); } } }
3.params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。必须是形参列表中的最后一个元素
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Collections; using System.Threading.Tasks; namespace test { public class myclass { public static void test(string name,int xhnum ,params int[] nums) { double num = 0; for (int i = 0; i < nums.Length;i++ ) { num+=nums[i]; } Console.WriteLine("{0}这次考试的总成绩是{1}学号是{2}",name,num,xhnum); } static void Main() { test("张三",80,95,98,100); Console.ReadKey(); } } }
时间就像海绵里的水,只要你愿意挤,总还是有的——鲁迅