欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中参数数组、引用参数和输出参数示例详解

程序员文章站 2023-12-15 08:52:52
前言 本文主要介绍了关于c#参数数组、引用参数和输出参数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 参数数组 在c#中,可以为函数指定...

前言

本文主要介绍了关于c#参数数组、引用参数和输出参数的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

参数数组

在c#中,可以为函数指定一个不定长的参数,这个参数是函数定义中的最后一个参数,这个参数叫做参数数组。

下面是一个例子:

namespace ch6ex2
{
 class program
 {
 static int sumvals(params int[] vals)
 {
 int sum = 0;
 foreach (int val in vals)
 {
 sum += val;
 }
 return sum;
 }
 static void main(string[] args)
 {
 int sum = sumvals(1, 2, 3, 4, 5);
 console.writeline($"summed values = {sum}");
 console.readkey();
 }
 }
}

函数sumvals有一个参数数组,即vals,在定义该参数时,需要使用params参数。在调用该函数时,可以给参数输入传入多个实参。

使用分散式传参时,编译器做如下事:

1)接受实参列表,用它们在堆中创建并初始化一个数组。

2)把数组的引用保存到栈中的形参里。

3)如果在对应的形参数组的位置没有实参,编译器会创建一个有零个元素的数组来使用。

4)如果数组参数是值类型,那么值被复制,实参不受方法内部的影响。

5)如果数组参数是引用类型,那么引用被复制,实参引用的对象可以受到方法内部的影响。

在使用数组式传参时,编译器使用你的数据而不是重新创建一个。即相当引用参数。

引用参数

可以通过引用传递参数,需要使用ref关键字。

下面是一个例子:

namespace myprogram
{
 class program
 {
 static void swapints (ref int a, ref int b)
 {
  int temp = b;
  b = a;
  a = temp; 
 }
 static void main(string[] args)
 {
  int a = 1;
  int b = 2;
  console.writeline($"a = {a}, b = {b}");
  swapints(ref a, ref b);
  console.writeline($"a = {a}, b = {b}");
  console.readkey();
 }
 }
}

这是一个简单的交换两个值的程序,由于函数swapints使用了引用参数,所以可以在函数中修改变量a和b的值,需要注意的是,在调用函数时也要使用ref传递引用参数。

输出参数

输出参数使用out关键字,它的效果与引用参数几乎相同,不同点是:

  • 引用参数的实参必须是已经赋值的变量,而输出参数不必。
  • 函数使用输出参数时,应该把它看作是未赋值的。

下面是一个例子:

namespace myprogram
{
 class program
 {
 static int maxvalue (int[] intarray, out int maxindex)
 {
  int maxvalue = intarray[0];
  maxindex = 0;
  for (int i = 0; i < intarray.length; i++)
  {
  if (intarray[i] > maxvalue)
  {
   maxvalue = intarray[i];
   maxindex = i;
  }
  }
  return maxvalue;
 }
 static void main(string[] args)
 {
  int maxindex;
  int[] intarray = { 12, 45, 23, 77, 73 };
  int maxvalue = maxvalue(intarray, out maxindex);
  console.writeline($"maxvalue = {maxvalue}, maxindex = {maxindex}.");
  console.readkey();
 }
 }
}

这个函数将一个数组中最大值的索引作为输出参数,返回最大值。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

上一篇:

下一篇: