使用ref关键字,可以使参数按引用传递。当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
若要使用ref关键字进行参数传递,则方法定义和调用方法都必须显示地使用ref关键字,而且使用ref关键字传递的参数必须最先进行初始化。
使用out关键字的方法与使用ref关键字的方法类似,同样会导致参数通过引用来传递。不同之处在于,使用out关键字传递的参数并不需要最先进行初始化,但需要在方法返回之前进行赋值。
若要使用out关键字传递参数,方法定义和调用方法都必须显示地使用out关键字。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
class Program
{
static void refMethod(ref string s)
{
s = "wangyuanfeng";
}static void outMethod(out int i,out string str1,out string str2)
{
i = 44;
str1 = "I‘ve been returned";
str2 = null;
}static void Main(string[] args)
{
string str = "old";
int value = new int();
string str1 = "old1";
string str2 = "old2";Console.WriteLine("use ref:");
Console.WriteLine("refMethod()before:\n str = {0}", str);
refMethod(ref str);
Console.WriteLine("refMethod() after :\n str = {0}", str);Console.WriteLine("use out:");
Console.WriteLine("outMethod() before:\n nvalue = {0};nstr1 = {1},nstr2 = {2}", value, str1, str2);
outMethod(out value, out str1, out str2);
Console.WriteLine("outMethod() after:\n nvalue = {0},nstr1 = {1},nstr2 = {2}", value, str1, str2);Console.Read();
}
}
}
原文链接:http://www.douban.com/note/273675561/