首页 / 软件开发 / .NET编程技术 / [你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)
[你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)2011-03-20 博客园 Anytao本文将介绍以下内容:按值传递与按引用传递深论ref和out比较参数应用浅析接上篇继续,『第十一回:参数之惑---传递的艺术(上)』4.2 引用类型参数的按值传递当传递的参数为引用类型时,传递和操作的是指向对象的引用,这意味着方法操作可以改变原来的对象,但是值得思考的是该引用或者说指针本身还是按值传递的。因此,我们在此必须清楚的了解以下两个最根本的问题:引用类型参数的按值传递和按引用传递的区别?string类型作为特殊的引用类型,在按值传递时表现的特殊性又如何解释?首先,我们从基本的理解入手来了解引用类型参数按值传递的本质所在,简单的说对象作为参数传递时,执行的是对对象地址的拷贝,操作的是该拷贝地址。这在本质上和值类型参数按值传递是相同的,都是按值传递。不同的是值类型的“值”为类型实例,而引用类型的“值”为引用地址。因此,如果参数为引用类型时,在调用方代码中,可以改变引用的指向, 从而使得原对象的指向发生改变,如例所示:引用类型参数的按值传递// FileName : Anytao.net.My_Must_net
// Description : The .NET what you should know of arguments.
// Release : 2007/07/01 1.0
// Copyright : (C)2007 Anytao.com http://www.anytao.com
using System;
namespace Anytao.net.My_Must_net
{
class Args
{
public static void Main()
{
ArgsByRef abf = new ArgsByRef();
AddRef(abf);
Console.WriteLine(abf.i);
}
private static void AddRef(ArgsByRef abf)
{
abf.i = 20;
Console.WriteLine(abf.i);
}
}
class ArgsByRef
{
public int i = 10;
}
}