C#里面参数是对象用REF是什么意思?

binglingfeng1800 2011-03-07 05:12:57
我看到有些函数的参数是对象,可是还有ref按引用传值,比如封装的Wnd消息处理函数。里面的ref msg,这里的msg我查了是对象啊,可是为什么还要用ref?本身传的就是引用啊?难道会是2重指针?谁能给我解释下?即使是2重指针在这里也没有意义啊。
...全文
2534 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonemqy 2011-03-07
  • 打赏
  • 举报
回复
传地址,在方法内部对变量做的修改在退出方法后仍将保存修改。
vrhero 2011-03-07
  • 打赏
  • 举报
回复 1
因为在C#中除非用ref或out声明,所有参数都是按值传递,不分类型...

引用也不是什么指针,更不是什么“2重指针”,可比性都没有...不要拿C++中的概念往里套,本质是不同的...

【.NET版月经问题】之二【引用类型参数就是按引用传递吗?】
lizhibin11 2011-03-07
  • 打赏
  • 举报
回复
byte、short、int、long、datetime等数据类型,和自定义的只包含这类基本数据类型字段的struct,都是需要添加ref out来传递内存地址。
如果是类和数组,直接传递就相当于指针。
lizhibin11 2011-03-07
  • 打赏
  • 举报
回复
Message是一个struct,不是类,如果不加ref,就会拷贝一个副本传过去。
宇智波飞 2011-03-07
  • 打赏
  • 举报
回复
在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
http://www.192csharp.com/bbs

111,119

社区成员

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

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

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