




付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、陈利娥 博文ref和out的应用要深刻理解ref和out的应用,不仅从语法的角度,更要从面向对象【OO】的角度去理解和把握。一、首先应该真正理解“方法”方法:1、语法的角度:略2、OO的角度:方法是对现实行为或操作的一种模拟比如:学生的上课,考试,面试等行为都可以用方法来模拟,【方法包含普通方法,虚方法,抽象方法,】二、这里我们要重点讨论方法的返回值1、有些方法不需要返回值,比如:实例1:我今天心情好,下班后去逛超市,但是不买任何东西实例1分析:方法构成不需要花钱方法无参数不买任何东西方法无返回值实例1可以用以下方法来模拟void 逛超市()/随意逛逛2、有些方法需要返回值也需要参数,比如:实
2、例2:我今天下班后去超市买一箱牛奶实例2分析:方法构成需要花*出*钱方法有参数买*回*一箱牛奶方法有返回值实例2可以用以下方法来模拟int 逛超市(double 钱)/花*出*钱 return 一箱牛奶;三、ref ,out的用法对于实例2:我今天下班后去超市买一箱牛奶实际我们有很多模拟的方式,如:方式1,方式2,方式3方式1:用*有*参数*有*返回值的方法来模拟,如上方法构成需要花*出*钱方法有参数,用一个参数默认参数,传入值买*回*一箱牛奶方法有返回值用return返回值,传出值方式2:用*有*参数*没有*返回值的方法来模拟,让函数增加一个out参数,让这个参数起到返回值的作用即传出值。方
3、法构成需要花*出*钱方法有参数, 一个为默认参数 传入值 另一个为out参数传出值买*回*一箱牛奶方法有返回值不用return返回值,而用out参数返回值,传出值实例2还可以用以下方法来模拟:void 逛超市(float 钱, out int 买的东西)/花*出*钱 买的东西= 一箱牛奶;方式3:方式2模拟这件事情用了两个参数,能不能少用一个参数呢。只用一个参数既起到传入也起到传出值的作用。OK!选用ref 参数方法构成需要花*出*钱方法有参数, 只有一个ref参数传入值和传出值买*回*一箱牛奶方法有返回值不用return返回值,而用ref参数返回值,传出值实例2还可以用以下方法来模拟:voi
4、d 逛超市(ref double 钱_买的东西)/花*出*钱 钱_买的东西= 一箱牛奶;四、ref ,out何时用,用在哪里1、是一种可选的解决方案:做一件事情,往往有很多方法可以选择,如果一个方法需要返回值,我们可以选择ref或out参数,如上面的例子。如果只需要方法传出值,选out参数即可如果需要方法既传入值也传出值,选ref参数2、是一种最好的解决方案:比如:某人面试了一家单位,他不但想知道是否要他,还想知道要他或不要他的原因再如:连接数据库,想知道连接是否成功,如果连接不成功,还想知道不成功的原因生活中实例多如牛毛:去超市买东西,交给收款员货币,你得到的不仅是要买的物品,还有找零,赠品
5、,总之,当一个函数需要返回多种不同类型值的时候,往往可以使用ref ,out参数,如bool Con_DB_Cle(string conStr,ref string why) try / why="" return true; catch(Exception e) / why= e.ToString(); return false; 五、ref ,out用在哪里,让我们看看类库,类库用的不多啊!例子1:System.:.Uri.TryCreate 方法:.: 使用指定基和相对 Uri 实例创建一个新的 Uri。如果成功创建了 Uri,则方法返回值为 true;否则为 fal
6、se。public static bool TryCreate(Uri baseUri,Uri relativeUri,out Uri result /此方法返回时,包含从 baseUri 和 relativeUri 构造的 Uri)public static bool TryCreate(string uriString,UriKind uriKind,out Uri result) 例子2:protected override bool System.Data.SqlClient.SqlDataAdapter .GetBatchedRecordsAffected(int commandId
7、entifier, out int recordsAffected, out System.Exception error)六、ref ,out的使用原则【依据VS.NET2008 msdn>.NET Framework 开发人员指南】方法参数可以通过值,通过引用传递,也可以作为输出参数传递。通过值传递参数时,方法获取调用方数据的副本,但不能改变调用方的数据副本。通过引用传递参数时,方法获取指向调用方数据的指针。此数据与调用方共享。如果方法对引用参数做出更改,则这些更改是对调用方的数据进行的。使用引用参数时,方法可以使用数据的初始状态。输出参数与引用参数类似,不同之处在于,输出参数以独占
8、方式用于向调用方返回数据,而引用参数可用于将数据传入方法,也可用于从方法中接收数据。 避免使用输出参数或引用参数。使用定义输出参数或引用参数的成员需要开发人员理解指针、值类型和引用类型之间的细微差别以及输出参数和引用参数之间的初始化差异。不要通过引用传递引用类型。通过引用传递一个对象使方法能够用不同的实例替换该对象。在大多数情况下,方法应使用提供的对象,而不应将其替换。对于此规则,有一些少量的例外(例如,可用于交换引用的方法)。 部分版权所有 2005 Microsoft Corporation。保留所有权利。 部分版权所有 Addison-Wesley Corporation。保留所有权利。 有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(框架设计指南:可重用 .NET 库的约定、术语和模式)。七、ref ,out的区别?经典面试题ref ,out的区别?简记1作用ref参数既可以由方法调用端向方法传入值,也可以由方法向方法调用端
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 29124-2025燃料电池电动汽车配套设施规范
- 2024年咨询工程师真题及参考答案详解(培优A卷)
- 2024-2025学年度注册公用设备工程师预测复习含答案详解(培优B卷)
- 2024年土木工程建筑施工考前冲刺练习题附参考答案详解【综合题】
- 2025年苏州工业职业技术学院单招《物理》考试彩蛋押题附参考答案详解(综合卷)
- 2024-2025学年中医助理医师自我提分评估及答案详解【全优】
- 传染病患者排泄护理与感染防控要点
- 2023年度高升专通关考试题库【名校卷】附答案详解
- 2025年城市公共自行车智能化改造项目的智能化管理方案报告
- 中班科学领域教案《奇妙的磁铁》反思
- 2025年时事政治考试100题及答案
- 农业产业强镇建设资金申请项目可行性研究及风险评估报告
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 身边安全隐患课件
- 2025-2026学年苏教版(2024)小学科学三年级上册(全册)每课教学反思
- GB/T 46025-2025家用轮椅床
- 2025全国教育大会
- 小学国画教学课件
- 多彩贵州课件
- 2025年县处级领导干部政治理论考试试题库(附答案)
- 计划生育技术服务诊疗常规和操作常规
评论
0/150
提交评论