社区
C#
帖子详情
C#里面参数是对象用REF是什么意思?
binglingfeng1800
2011-03-07 05:12:57
我看到有些函数的参数是对象,可是还有ref按引用传值,比如封装的Wnd消息处理函数。里面的ref msg,这里的msg我查了是对象啊,可是为什么还要用ref?本身传的就是引用啊?难道会是2重指针?谁能给我解释下?即使是2重指针在这里也没有意义啊。
...全文
2534
7
打赏
收藏
C#里面参数是对象用REF是什么意思?
我看到有些函数的参数是对象,可是还有ref按引用传值,比如封装的Wnd消息处理函数。里面的ref msg,这里的msg我查了是对象啊,可是为什么还要用ref?本身传的就是引用啊?难道会是2重指针?谁能给我解释下?即使是2重指针在这里也没有意义啊。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
stonemqy
2011-03-07
打赏
举报
回复
传地址,在方法内部对变量做的修改在退出方法后仍将保存修改。
vrhero
2011-03-07
打赏
举报
回复
1
因为在C#中除非用ref或out声明,所有参数都是按值传递,不分类型...
引用也不是什么指针,更不是什么“2重指针”,可比性都没有...不要拿C++中的概念往里套,本质是不同的...
【.NET版月经问题】之二【引用类型参数就是按引用传递吗?】
garfieldzf
2011-03-07
打赏
举报
回复
http://msdn.microsoft.com/zh-cn/library/14akc2c7(VS.80).aspx
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
.NET/
C#
利用反射调用含
ref
或out
参数
的方法示例代码
前言 使用反射,我们可以很容易地在运行时调用一些编译时无法确定的属性、方法等。在.NET中的反射可以实现从
对象
的外部来了解
对象
(或程序集)内部结构的功能,哪怕你不知道这个
对象
(或程序集)是个什么东西,另外.NET中的反射还可以运态创建出
对象
并执行它其中的方法。 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建
对象
,即使这个
对象
的类型在编译时还不知道。 反射的用途: (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序
C#
难点逐个击破(1):
ref
参数
传递
一般情况,方法的
参数
传递是通过值进行传递的,即一个
对象
作为
参数
传递给方法使用,该
对象
便进驻到该
参数
对象
所在指针的内存空间(使用C来描述),也就是该
对象
在此位置创建了副本,当方法运行结束时,该副本将会被销毁;这种传递方式的使用占据了日常方法传参的绝大多数。另一种情况是引用传递,它与值传递方式不同,
对象
传递给方法时对方法
参数
并没有影响,仍然返回的是受原始
参数
取值影响的方法,即MethodInstance(
ref
_
ref
Value)调用 Method(
ref
_arg)方法,但_
ref
Value对Method无影响,返回的仍是_arg影响的结果。这点也能想到_arg必须在使用前赋值。 示例: 另一
c#
基础知识巩固
c#
基础知识中的一些小知识点,如
REF
,OUT关键字,类型推断等等。
C#
引用
参数
ref
C#
引用
参数
ref
C#
之
ref
参数
ref
参数
能够将一个变量带入一个方法中进行改变,改变完成后,再将改变后的值带出方法。
ref
参数
要求在方法外必须为其赋值,而方法内可以不赋值。
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章