第四节(方法二)

方法的参数传递机制

值参数(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);
}
}

}


 

posted @ 2009-02-23 12:49  BeamWen  阅读(90)  评论(0编辑  收藏  举报