函数参数
C# 中的参数有三种类型:1. 按值传递/输入参数2. 按引用传递/输入-输出参数3. 输出参数
如果你有 COM 接口的思想,而且还是参数类型的,你会很容易理解 C# 的参数类型。
按值传递/输入参数值参数的概念和 C++ 中一样。传递的值复制到了新的地方并传递给函数。
例子:
按引用传递/输入-输出参数
C++ 中的引用参数是通过指针或引用运算符 & 传递的。C# 中的引用参数更不易出错。你可以传递一个引用地址,你传递一个输入的值并通过函数得到一个输出的值。因此引用参数也被称为输入-输出参数。
你不能将未初始化的引用参数传递给函数。C# 使用关键字 ref 指定引用参数。你同时还必须在传递参数给要求引用参数的函数时使用关键字 ref。
例子:
SetDay(5);
...
void SetDay(int day){
....
}
int a= 5;FunctionA(ref a); // 使用 ref,否则将引发编译时错误
Console.WriteLine(a); // 打印 20void FunctionA(ref int Val){
int x= Val;
Val = x* 4;}
输出参数
输出参数是只从函数返回值的参数。输入值不要求。C# 使用关键字 out 表示输出参数。
例子:
int Val; GetNodeValue(Val);
bool GetNodeValue(out int Val){
Val = value;
return true;
可变数量的参数和数组
C# 中的数组使用关键字 params 进行传递。一个数组类型的参数必须总是函数最右边的参数。只有一个参数可以是数组类型。你可以传送任意数量的元素作为数组类型的参数。看了下面的例子你可以更好的理解:
注意:使用数组是 C# 提供用于可选或可变数量参数的唯一途径。例子:
void Func(params int[] array) {
Console.WriteLine("number of elements {0}",array.Length);
}
Func(); // 打印 0
Func(5); // 打印 1
Func(7,9); // 打印 2
Func(new int[] {3,8,10}); // 打印 3
int[] array = new int[8] {1,3,4,5,5,6,7,5};Func(array); // 打印 8