C# 方法ref与out参数

luodanyu 2007-01-14 04:31:08
ref与out有什么区别?

除了在送参数进去的时候,out不用初始化参数。
...全文
701 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hamber_Bao 2011-03-12
  • 打赏
  • 举报
回复
ref是指定为引用传递,不论是对于引用类型或者值类型,都可以起到保留修改后的数据的作用。

在方法后的参数列表中,一般可以存在四种参数类型
一、输入参数
二、输出参数
三、引用参数
四、参数数组

out关键字就是在输出参数中起作用的

示例:

public class Demo
{
public void calc(out int number)
{
number = 100;
}
}

调用:

static void Main()
{
Demo demo = new Demo();

int num = 0;

demo.calc(out num);

Console.Write(num);
}


注意:

在使用out关键字时,被其修饰的变量,在调用前必须赋值。
在调用时,应该声明一个类型一致的变量来接受
luodanyu 2007-01-15
  • 打赏
  • 举报
回复
谢谢^-^大家。


to robertzhang10(下下签)
谢谢你的经验,但是方法的重载我们还没学到,编译和运行的差别我也不懂,恐怕不是三言两句就能说明白的,以后我学到了再体会吧!
Fibona 2007-01-14
  • 打赏
  • 举报
回复
一个是初始化的差别
out 不需要,ref需要

第二个就是返回引用值时,out必须在方法体里面付值
ref不需要
zhulei2008 2007-01-14
  • 打赏
  • 举报
回复
好像也只有初始化的区别,
growleaf 2007-01-14
  • 打赏
  • 举报
回复
还有就是,在具有out参数的函数中,必须对out的参数进行赋值。而ref则不需要。
denbes 2007-01-14
  • 打赏
  • 举报
回复
ref和out修饰符可以同时应用于引用类型和值类型的参数.效果是完全一样的参数将成为参数将成实参的一个别名,如果使参数重新引用一个新建的对象,那么实际是让实参重新引用新建的对象.

ref须初始化
out不用初始化
superxiaomm 2007-01-14
  • 打赏
  • 举报
回复
具体好像一个要初始化,好像是out把
其他就没有了
robertzhang10 2007-01-14
  • 打赏
  • 举报
回复
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。
ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。
但是,如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载。
另外属性不是变量,因此不能作为 out 参数传递。
qyl2008 2007-01-14
  • 打赏
  • 举报
回复
ref与out有什么区别?
除了在送参数进去的时候,out不用初始化参数。

除此之外,并无区别
xiaoliangwh 2007-01-14
  • 打赏
  • 举报
回复
2
帮顶 !
xiaoliangwh 2007-01-14
  • 打赏
  • 举报
回复
沙发 !

帮顶 !

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧