原文地址:http://www.dingos.cn/index.php?topic=2004.0
在C#中有四种参数传递的方式。这四种类型的参数是:
n Value
n Out
n Ref
n Params
1.值参数
在C#中这是默认参数类型。如果参数前面没有任何的修饰符它是默认是“值”参数。但使用“值”类型的参数传递给函数的是真实值,这意味着在函数体内改变产生的值不会传递给调用部分。
using System;
class ParameterTest {
static void MyMethod(int Param1) {
Param1 = 100;
}
static void Main() {
int Myvalue = 5;
MyMethod(Myvalue);
Console.WriteLine(Myvalue);
}
}
上面程序输出5,虽然参数Param1的值在MyMethod方法改变了,但不会传递给调用它的部分,因此值参数仅仅是输入。
2.Out 参数
“out”参数仅仅是输出参数意味着他们是从函数中回传值。创建一个“out”参数通过在参数的数据类型前面加上out修饰符。每个“out”参数传递的仅仅是传递给方法一个没有分配的引用。
using System;
class ParameterTest {
static void MyMethod(out int Param1) {
Param1 = 100;
}
static void Main() {
int Myvalue = 5;
MyMethod(out Myvalue);
Console.WriteLine(Myvalue);
}
}
上面程序输出100,因此“out”参数的值传递会调用部分。
注意:
调用部分在参数前必须加上“out”修饰符。
“out”参数不能使用函数之前分配给他的值。
在方法返回前,分配给“out”参数一个值。
3.Ref参数
“ref”参数是输入/输出参数意味着他能够用来传递值给函数也可以从函数将值返回。创建“ref”参数是在参数数据类型前加上ref修饰符。每个“ref”参数传递给函数的是一个有值的引用。
using System;
class ParameterTest {
static void Mymethod(ref int Param1) {
Param1 = Param1 + 100;
}
static void Main() {
int Myvalue = 5;
Mymethod(ref Myvalue);
Console.WriteLine(Myvalue);
}
}
上面程序输出105,因此“ref”参数扮演着输入/输出的作用。
注意:
调用部分在参数前必须加上“ref”修饰符。
在调用方法前必须为“ref”参数分配值。
4.Params 参数
“params”参数在C#中是非常有用的特点。当传递的参数的个数不确定是可以“params”参数。“params”是一个一维或交错数组。
using System;
class ParameterTest {
static int Sum(params int[] Param1) {
int val = 0;
foreach(int P in Param1) {
val = val + P;
}
return val;
}
static void Main() {
Console.WriteLine(Sum(1, 2, 3));
Console.WriteLine(Sum(1, 2, 3, 4, 5));
}
}
上面程序输出6和15。
注意:
为“params”参数传递的值可以是每个用逗号分隔的值列表,也可以是一个一维数组。
“params”参数仅仅是输入参数。