您的位置:首页 > 编程语言 > C#

C#参数传递机制

2010-05-19 19:09 232 查看
  C#方法的参数传递机制和C语言、C++语言不一样的是,新增加了一种叫做输出传递机制,其他两种机制为值传递和引用传递机制。

  总结如下:

  C#方法的参数传递机制有以下三种方法:

值传递
引用传递
输出传递

根据以上描述,我们来举个例子说明这三种传递机制内幕。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Method
{
class Program
{
public static void ValueMethod(int i)//值传递
{
i++;
}
public static void RefereceMethod(ref int i)//参数传递
{
i++;
}
public static void OutMethod(out int i)//输出传递
{
i = 0;
i++;
}
static void Main(string[] args)
{
int i = 0;
ValueMethod(i);
Console.WriteLine("i = " + i);
int j = 0;
RefereceMethod(ref j);//此处一定要添加ref传入
Console.WriteLine("j = " +j);
int k = 0;
OutMethod(out k);
Console.WriteLine("k = " + k);
}
}
}

  使用这三种传递机制的时候,要注意的问题都在注释中给出。程序输出的结果为:

i = 0

j = 1

k = 1

  那么,回顾以下,可以发现,在C#中,Main函数的局部变量如果使用值传递的办法,那么该参数被调用后,依然保持调用前的值。而输出参数和引用参数都会改变被引用的变量值。

下面来讲讲可变长参数 的传递(params)先看代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Method
{
class Program
{
static int addi(params int[] values)
{
int sum = 0;
foreach (int i in values)
sum += i;
return sum;
}
static void PrintArr(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
arr[i] = i;
}
static void Main(string[] args)
{
int[] arr = { 100, 200, 300, 400 };
PrintArr(arr);
foreach (int i in arr)
Console.Write(i + ", ");
Console.WriteLine();
}
}
}

输出的结果为: 0, 1, 2, 3,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: