您的位置:首页 > 其它

.net框架读书笔记---引用参数(ref/out)

2010-04-27 23:27 148 查看
接上一篇.net框架读书笔记---方法(类型造器)

  默认情况下,CLR假设所有的方法参数都是按值传递参数的。当参数为引用类型的对象时,参数的传递是通过传递对象的引用(或)指针来完成的。这意味着方法可以改变引用对象,并且调用代码可以看到这种改变的结果。

  对于值类型实例的参数来说,传递给方法的将是值类型实例的一个拷贝。这意味着方法会得到一份属于它自己的值类型实例的成员。而调用方法的代码中的实例不会受到影响。

  除了按值传递参数外,CLR还允许我们按引用的方式来传递参数.在C#中可以使用out和ref关键字来做到这一点。out和ref的区别是:

一个方法的参数被标识为out,那么调用代码在调用该方法之前可以不初始化该参数,并且调用方法不能直接读取参数的值,它必须在返回之前为该参数赋值。

一个方法的参数被表示为ref,那么调用代码在调用该方法前必须首先初始化该参数。被调用方法可以任意读取该参数、或者为该参数赋值。

  out关键字示例:

代码

class Program
{
static void Main(string[] args)
{
string s1 = "heaiping";
string s2 = "hap";
Swap(ref s1, ref s2);
Console.WriteLine(s1);
Console.WriteLine(s2);
}

static public void Swap(ref string a, ref string b)
{
string c = a;
a = b;
b = c;
}
}


修正后编译通过并得到期望值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐