ref关键字 :用作ref参数的变量,对这个参数的任何改变都会影响用作参数的变量值
static void showDouble(ref int val)
{
val *= 2;
Console.WriteLine("val doubled = {0},val");
}
调用
int myNumer = 5;
Console.WriteLine("myNumber ={0},myNumber");
showDouble(ref myNumber);
Console.WriteLine("myNumber ={0},myNumber");
输出为:
myNumber = 5;
val doubled = 10;
myNumber = 10;
用作ref参数的变量有两个限制。第一,由于函数可能会改变引用参数的值,所以必须在函数调用中使用变量
const定义的常量不能用作ref参数。第二,必须对变量进行初始化。
Out关键字
可以把未赋值的变量用作out参数。在函数中使用out参数时,这个参数必须看做是还未赋值的。即使已经赋值执行时该值也会丢失。并赋予新的值
static int MaxValue(int[] intArray, out int maxIndex)
{
int maxVal = intArray[0];
maxIndex = 0;
for (int i = 1; i < intArray.Length; i++)
{
if (intArray[i] > maxVal)
{
maxVal = intArray[i];
maxIndex = i;
}
}
return maxVal;
}
int[] myArray = { 1, 6, 3, 8, 4, 7 };
int maxIndex;
Console.WriteLine(MaxValue(myArray,out maxIndex));
Console.WirteLine(maxIndex + 1);