关于ref和out

Allen_halls 2006-02-21 02:40:47
这两个东西总是用不好,有经验的老鸟介绍点经验成不?该怎么用?
...全文
218 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
blackmailer 2006-02-22
  • 打赏
  • 举报
回复
由于c#没有指针,而程序有时有这方面的需求,那么在C#中,引入ref和out来代替指针和引用来进行定义传址参数
\\\\\\\\\\\\\\\\\\\\\\\\\\
C#2.0中通过不安全代码是可以使用指针的
÷÷÷÷÷÷÷
TestRef()调用后,i的值被改为b了;
TestNoRef()是不改变参数值的,所以输出还是b;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
同意!
、、、、、、、、、、、、
感觉ref和out用法贝贝狗说的挺好的
linshuangquan 2006-02-22
  • 打赏
  • 举报
回复
up
bbdog 2006-02-22
  • 打赏
  • 举报
回复
TestRef()调用后,i的值被改为b了;
TestNoRef()是不改变参数值的,所以输出还是b;
要注意,这时候i的值在第一个函数调用之后就已经改为b了!!!
Allen_halls 2006-02-22
  • 打赏
  • 举报
回复
using System;
public class MyClass
{
public static void TestRef(ref char i)
{
// The value of i will be changed in the calling method
i = 'b';
}

public static void TestNoRef(char i)
{
// The value of i will be unchanged in the calling method
i = 'c';
}
public static void Main()
{

char i = 'a'; // variable must be initialized
TestRef(ref i); // the arg must be passed as ref
Console.WriteLine(i);
TestNoRef(i);
Console.WriteLine(i);
}
}

输出
b
b


这是CSDN上的例子
我不明白为什么第2个结果还是b
为什么?
bbdog 2006-02-21
  • 打赏
  • 举报
回复
还可以根据这样的原则选用:

在函数的声明中,看到out时,表示该参数是经过函数内部处理后,返回的结果,
后面的程序段要用到这个结果;

在函数的声明中,看到ref时,表示该参数是按引用调用,这可能是:
1,为了得到在函数内部处理后的结果;
2,为了提高效率;
3, ...

依我看,为了提高效率用ref,为了得到加工后的返回结果用out,
这样,在看到函数声明时,就知道函数的大概功用了。

Knight94 2006-02-21
  • 打赏
  • 举报
回复
至于例子,建议查看msdn,里面很详细。
Knight94 2006-02-21
  • 打赏
  • 举报
回复
由于c#没有指针,而程序有时有这方面的需求,那么在C#中,引入ref和out来代替指针和引用来进行定义传址参数
ref:在传递的时候,要进行初始化;
out:在传递的时候,不需要进行初始化,但是在函数中必须初始化。
wxwx110 2006-02-21
  • 打赏
  • 举报
回复
指针
wxdl1981 2006-02-21
  • 打赏
  • 举报
回复
out和ref 都是传值参数,
不过out不需要事先初始化
而 ref则需要

110,570

社区成员

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

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

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