- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
若需要在两个窗体间实现参数的引用传递。那么可以设计一个label控件,然后将它设置为visible,最后将此label控件设置为public 这样就可以将label作为一个公用缓冲区 ,如此也就实现了引用传递的功能。当然如果是一个类方法间的引用传递可以使用ref 和out 也就实现了C指针的作用
C# 参考之方法参数关键字:params、ref及out
如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。
params
params?关键字可以指定在参数数目可变处采用参数的方法参数。
在方法声明中的?params?关键字之后不允许任何其他参数,并且在方法声明中只允许一个?params?关键字。
示例:
字面意思比较难懂,所以看示例很有用。
//?keywords_params.csusing?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.csusing?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?=?10i?=?110After?the?method?calling:?i?=?110*/
out
out?关键字会导致参数通过引用来传递。这与 ref 关键字类似。
与 ref 的不同之处:
ref 要求变量必须在传递之前进行初始化。
尽管作为 out 参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方
您可能关注的文档
最近下载
- 人民大2024智慧运输运营 课件项目五 物流运输组织管理.pptx VIP
- 《智慧运输运营》课件——项目二 公路货物运输实务对应的.pptx VIP
- 试验室常用仪器使用及管理.ppt VIP
- 《智慧运输运营》课件——项目三 铁路货物运输实务教学.pptx VIP
- 《智慧运输运营》课件——项目四 航空货物运输实务教学.pptx VIP
- GB_T 40144-2021协作业务关系管理体系 要求和框架.docx VIP
- 2024版人体器官捐献和移植条例解读课件.pptx VIP
- 《智慧运输运营》课件——项目五 水路货物运输实务.pptx VIP
- 遗体识别《遗体防腐技术》教学课件.pptx VIP
- 《智慧运输运营》课件——智能运输系统.ppt VIP
文档评论(0)