值传递
C#默认都是值传递的,就是复制变量的一个副本传递给方法,所以在退出方法后,对变量的修改无效。
但是要注意,当传递是引用类型时,因为引用类型是一个引用的地址,所以修改引用地址指向的对象时,一样会修改对象的值,这种现象不能当做引用传递
引用传递
引用传递是对象本身传递给方法,当在方法中对对象做修改时,退出方法后修改是有效的,在C#中引用传递需要在参数类型前加关键字 ref ,但是ref 的参数变量在使用前必须被初使化,可有时通过引用传递的变量初值是没意义的,这容易产生混淆,这时在C#中有另一关键字 out ,out 与 ref 关键字使用时效果一样,但是out关键字对变量可以不初使化,但是out关键字的变量在方法中必须给分配一个值,否则编译会不通过。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
class
Program
{
static
void
Main(
string
[] args)
{
var
v =
new
Values();
int
i = 10;
int
j;
Console.WriteLine(v.a);
Method.Update(v,
ref
i,
out
j);
Console.WriteLine(
string
.Format(
"v.a={0}"
, v.a));
Console.WriteLine(
string
.Format(
"i={0}"
, i));
Console.WriteLine(
string
.Format(
"j={0}"
, j));
Console.ReadKey();
}
}
public
class
Values
{
public
int
a = 10;
}
public
class
Method
{
public
static
void
Update(Values v,
ref
int
i,
out
int
j)
{
v.a = 20;
i = 20;
j = 20;
}
}
|
输出值:10
。
v.a= 20
i=20
j=20
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5727424.html
,如需转载请自行联系原作者