IT技术学习网
IT技术学习网
您的位置: 主页 > 编程技术 > c# >

c#按引用传递参数原理

2014-12-25 17:34 来源: IT技术学习网原创 阅读:

本文给大家介绍c#中按引用传递参数它分为值类型按引用传递和引用类型按引用传递

按引用传递不会涉及隐式复制。它所传递的,不是在调用方法时传递给方法的变量的值,而是变量本身。它不会创建新的存储位置,而是使用与变量相同的存储位置,因此,在调用方法上下文中传递给方法的变量与方法内部使用的参数,实际上是同一个。

在按引用传递参数时,在方法的声明和调用的地方都必须显式使用ref修饰符,这是为了让你清楚你正在进行的是与默认传递方式不同的按引用传递。

值类型按引用传递

按照引用传递的定义,我们实际上是把变量本身传递给了方法,在方法内和调用方法的地方,使用的实际上是同一个变量。因此对于值类型来说,在方法内部对参数所做的任何改动,也都会反映到方法外部。#Code1改成按引用传递后,输出结果将为10。

// #Code4
int i = 5;
N(ref i);
Console.WriteLine(i);
...
void N(ref int j)
{
    j = 10;
}

参数的传递过程如下图所示:

c#按引用传递原理

引用类型按引用传递

应用类型按应用传递与值类型按引用传递表现形式是一样的,在方法内部所做的任何改变,都将反映到外部变量上。因此,如#Code2将sb2设置为null,则外部的sb1也会变成null,如#Code3调用sb2.Append,外部的sb1也会进行相应的改变。

// #Code5
StringBuilder sb1 = new StringBuilder("Hello");
M(ref sb1);
Console.WriteLine(sb1);
...
void M(ref StringBuilder sb2)
{
    sb2 = null;
}

如图所示:

c#按引用传递原理

c#按引用传递参数原理
转载需注明出处:IT技术学习网 http://www.itjsxx.com/csharp/Reference_pass.html

评论文章 c#按引用传递参数原理
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图