首页 > 代码库 > out 、ref、params

out 、ref、params

1.out参数

在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组,但是如果返回多个不同类型的值的时候,返回数组就不行,那么这个时候可以考虑用out参数。

out参数侧重于在一个方法中可以返回多个不同类型的值。

技术分享
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();
      }
   }
  }
View Code

 

2.ref参数

能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后值带出去。

ref参数要求在方法外必须为其赋值,而方法内可以不赋值。

技术分享
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();
         
      }
   }
  }
View Code

 

3.params可变参数

将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。必须是形参列表中的最后一个元素

技术分享
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();
      }
   }
  }
View Code

 

out 、ref、params