第四节(方法二)
方法的参数传递机制
值参数(Value Parameter)
方法名称(参数类型 参数名称[,参数类型 参数名称])
引用参数(Reference Parameter)
方法名称 (ref 参数类型 参数名称[,ref 参数类型 参数名称])
输出参数(Output Parameter)
方法名称 (Output 参数类型 参数名称 [,out 参数类型 参数名称])
举例:
using System;
class Method
{
public static void ValueMethod(int i)
{
i++;
}
public static void ReferenceMethod(ref int i)
{
i++;
}
public static void OutputMethod(out int i)
{
i=0;
i++;
}
static void Main()
{
int i=0;
ValueMethod(i); // 在新的堆栈中执行
Console.WreiteLine("i="+i);
int j=0;
ReferenceMethod(ref j);//在源堆栈中执行
Console.WriteLine("j="+j);
int k;
OutputMethod(out k);////在源堆栈中执行 ,要在方法体 初始化值
Console.WriteLine("k"+k);
}
}
输出结果: 0
1
1
向方法传递可变数量的参数
为了将方法声明为可以接受可变量参数的方法,使用Params 关键字
例子:
using System;
class Method
{
static int addi (params int[] values)
{
int sum=0;
foreach (int i in values)
sum+=i;
return sum;
static void Main //入口函数
{
Console.WriteLine(addi(1,2,3,4,5));
}
}
}
输出结果 :15
数组是一个引用类型的变量
举例:
using System;
class Method
{
static void PrintArr(int[] arr)
{
for (int i=0;i<arr.Length;i++)
{
arr[i]=i;
}
static void Main()
{
int[] arr = {100,200,300,400};
PrintArr(arr); //这里 传的只是一个地址 然后交个托管堆
foreach (int i in arr)
Console.Write(i+",");
}
}
}
输出结果:0,1,2,3
S 是引用类型 字符串在创建之后 不可改变 包括变张变短
using System;
class Method
{
static void PrintArr(string s)
{
s = "98765"
}
static void Main()
{
string s = "12345";
PrintArr(s);
Console.WriteLine(s);
}
}
}