C#中参数数组、引用参数和输出参数的示例分析-创新互联

这篇文章将为大家详细讲解有关C#中参数数组、引用参数和输出参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联-专业网站定制、快速模板网站建设、高性价比盐津网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式盐津网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖盐津地区。费用合理售后完善,十余年实体公司更值得信赖。

参数数组

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

下面是一个例子:

namespace Ch7Ex2
{
 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();
 }
 }
}

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

关于“C#中参数数组、引用参数和输出参数的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:C#中参数数组、引用参数和输出参数的示例分析-创新互联
分享网址:http://azwzsj.com/article/pcphp.html