C#中的指针ref及out.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
若需要在两个窗体间实现参数的引用传递。那么可以设计一个label控件,然后将它设置为visible,最后将此label控件设置为public 这样就可以将label作为一个公用缓冲区 ,如此也就实现了引用传递的功能。当然如果是一个类方法间的引用传递可以使用ref 和out 也就实现了C指针的作用 C# 参考之方法参数关键字:params、ref及out 如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。 params params?关键字可以指定在参数数目可变处采用参数的方法参数。 在方法声明中的?params?关键字之后不允许任何其他参数,并且在方法声明中只允许一个?params?关键字。 示例: 字面意思比较难懂,所以看示例很有用。 //?keywords_params.cs using?System; class?App { ????public?static?void?UseParams(params?object[]?list) ????{ ????????for?(int?i?=?0;?i??list.Length;?i++) ????????{ ????????????Console.WriteLine(list[i]); ????????} ????} ????static?void?Main() ????{ ????????//?一般做法是先构造一个对象数组,然后将此数组作为方法的参数 ????????object[]?arr?=?new?object[3]?{?100,?a,?keywords?}; ????????UseParams(arr); ????????//?而使用了params修饰方法参数后,我们可以直接使用一组对象作为参数 ????????//?当然这组参数需要符合调用的方法对参数的要求 ????????UseParams(100,?a,?keywords); ????????Console.Read(); ????} } ref ref?关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。 若要使用 ref 参数,则方法定义和调用方法都必须显式使用?ref?关键字。 传递到 ref 参数的参数必须最先初始化。这与 out 不同,out 的参数在传递之前不需要显式初始化。 属性不是变量,因此不能作为 ref 参数传递。 尽管 ref 和 out 在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。例如,从编译的角度来看,以下代码中的两个方法是完全相同的。如果尝试这么做,将导致不能编译该代码。 如果一个方法采用 ref 或 out 参数,而另一个方法不采用这两类参数,则可以进行重载。 示例: 按引用传递值类型是有用的,但是 ref 对于传递引用类型也是很有用的。这允许被调用的方法修改该引用所引用的对象,因为引用本身是按引用来传递的。 //?keywords_ref.cs using?System; class?App { ????public?static?void?UseRef(ref?int?i) ????{ ????????i?+=?100; ????????Console.WriteLine(i?=?{0},?i); ????} ????static?void?Main() ????{ ????????int?i?=?10; ????????//?查看调用方法之前的值 ????????Console.WriteLine(Before?the?method?calling:?i?=?{0},?i); ????????UseRef(ref?i); ????????//?查看调用方法之后的值 ????????Console.WriteLine(After?the?method?calling:?i?=?{0},?i); ????????Console.Read(); ????} } /* 控制台输出: Before?the?method?calling?:?i?=?10 i?=?110 After?the?method?calling:?i?=?110 */ out out?关键字会导致参数通过引用来传递。这与 ref 关键字类似。 与 ref 的不同之处: ref 要求变量必须在传递之前进行初始化。 尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档