您的位置:首页 > 编程语言 > C#

c#中out和ref的使用区别

2009-10-30 12:37 417 查看
c#中out和ref的使用区别

ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。使用ref前必须对变量赋值,out不用。

out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,ref引用的可以修改,也可以不修改。

如果你想返回多个值怎么办,OUT....

  区别可以参看下面的代码:

using
system;

class
testapp

{

 
static

void
outtest(
out

int
x,
out

int
y)

 {
//
离开这个函数前,必须对x和y赋值,否则会报错。

  
//
y = x;

  
//
上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行

  x
=

1
;

  y
=

2
;

 }

 
static

void
reftest(
ref

int
x,
ref

int
y)

 {

  x
=

1
;

  y
=
x;

 }

 
public

static

void
main()

 {

  
//
out test

  
int
a,b;

  
//
out使用前,变量可以不赋值

  outtest(
out
a,
out
b);

  console.writeline(
"
a={0};b={1}
"
,a,b);

  
int
c
=
11
,d
=
22
;

  outtest(
out
c,
out
d);

  console.writeline(
"
c={0};d={1}
"
,c,d);

  
//
ref test

  
int
m,n;

  
//
reftest(ref m, ref n);

  
//
上面这行会出错,ref使用前,变量必须赋值

  
int
o
=
11
,p
=
22
;

  reftest(
ref
o,
ref
p);

  console.writeline(
"
o={0};p={1}
"
,o,p);

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: