C#中ref和out的使用小结

转载 2007年10月09日 14:04:00
C#中ref和out的使用小结
2006-08-30 07:00 作者: 出处: blog 责任编辑:方舟
  ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。

  使用ref前必须对变量赋值,out不用。

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

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

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);
 }

}
 

C#中的‘集合’案例

-
  • 1970年01月01日 08:00

c#中ref和out的用法

1、out必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。 2、ref必段在函数体外初始化。 3、两都在函数体的任何修改都将影响到外面。 例:...
  • sinat_26296167
  • sinat_26296167
  • 2015-03-04 08:55:53
  • 1611

C# ref 和 out ,params关键字的用法

C# ref,out,params 的用法。
  • mydad353193052
  • mydad353193052
  • 2015-08-29 22:25:38
  • 1049

C#中in,out,ref的作用和区别

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键...
  • jadeflute
  • jadeflute
  • 2010-01-20 22:13:00
  • 23658

C# out、ref关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。 out: class Program { /* * out、ref都是引用传递,传递后使用...
  • CommandBaby
  • CommandBaby
  • 2016-04-06 14:53:46
  • 4319

C#中ref和out参数使用时需要注意的问题

C#方法中的ref和out      ref        通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响...
  • zzp_403184692
  • zzp_403184692
  • 2012-10-20 10:10:09
  • 1640

C# Error CS1628: 不能在匿名方法、lambda 表达式或查询表达式中使用 ref 或 out 参数

写c#windows窗体应用的时候, 在一个函数里传递了ref的参数, 并且在这个函数里调用了窗体的invoke方法,结果出了cs1628的错误。去Stack Overflow上找了一篇解释,特翻译在...
  • u010511984
  • u010511984
  • 2017-02-28 16:42:18
  • 1362

c#中的关键字out是什么意思?ref是什么意思?它们有什么区别?

不知大家有没有遇到过需要一个函数返回多个值的情况。 当写代码要返回多个值的时候,当然可以返回一个数组来实现,但如果遇到需要返回的多个值的类型不同呢?这个时候怎么办? c#中,out关键字和ref关...
  • sinat_23079759
  • sinat_23079759
  • 2016-10-22 22:14:54
  • 3092

【Lua】访问C#中的属性和方法-特殊情况-带有out和ref关键字

using System; using LuaInterface; namespace myLua { class MainClass { public string name = "Ocea...
  • sinat_20559947
  • sinat_20559947
  • 2015-08-28 23:46:14
  • 3963

ref与out之间的区别整理

ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。 对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别。 总结起来,他们有如下语法区别:  ...
  • xiaoning8201
  • xiaoning8201
  • 2011-10-21 10:39:08
  • 8924
收藏助手
不良信息举报
您举报文章:C#中ref和out的使用小结
举报原因:
原因补充:

(最多只允许输入30个字)