值参数
当利用值向方法传递参数时, 编译程序给实参的值做一份拷贝, 并将此拷贝传递给该方法. 被调用的方法不会修改内存中实参的值, 所以使用 值参数时 , 可以保证实际值是安全的, 在调用方法时 ,如果形式化参数的类型是值参数的话, 调用的实参的表达式必须保证是正确的值表达式
引用型参数
和值参不同的是 , 引用型参数并不开辟新的内存区域. 当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法. 发方法中,引用型参数通常已经初始化.
在方法中使用引用型参数,会经常可能导致多个变量名指向同一处内存地址
输出参数
与引用型参数类似 , 输出型参数也不开辟新的内存区域. 与 引用型参数的差别在于, 调用方法前 无需对变量进行初始化 , 输出型参数用于传递方法返回的数据.
out 修饰符后应跟随与形参的类型相同的类型声明. 在方法返回后, 传递的变量被认为经过了初始化.
using System;
class Test
{
static void SplitPath(string path, out string dir, out string name)
{
int i=path.Length;
while(i>0)
{
char ch=path[i-1];
if(ch=='\\'||ch=="/"||ch==':')
{
break;
}
i--;
}
dir=path.Substring(0,i);
name=path.Substring(i);
}
static void Main()
{
string dir,name;
SplitPath("c:\\windows\\system\\hello.txt",dir,name);
Console.WriteLine(dir);
Console.WriteLine(name);
}
}
数组型参数
如果形参表中包含了数组型参数, 那么他必须在参数表中位于最后.
参数只允许是一维数组. 如 : string[] 和string[][]类型都可以作为数组型参数, 而 string[,] 则不能
数组型参数不能再有 ref 和 out 修饰符
|