欢迎来到天天文库
浏览记录
ID:12736040
大小:68.50 KB
页数:4页
时间:2018-07-18
《方法和传递参数_ref和out的用法详细讲解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ref和out的应用要深刻理解ref和out的应用,不仅从语法的角度,更要从面向对象【OO】的角度去理解和把握。一、首先应该真正理解“方法”方法:1、语法的角度:略2、OO的角度:方法是对现实行为或操作的一种模拟比如:学生的上课,考试,面试等行为都可以用方法来模拟,【方法包含普通方法,虚方法,抽象方法,……】二、这里我们要重点讨论方法的返回值1、有些方法不需要返回值,比如:实例1:我今天心情好,下班后去逛超市,但是不买任何东西 实例1分析:方法构成不需要花钱方法无参数不买任何东西方法无返回值实例1可以用以下方法来模
2、拟void逛超市(){//随意逛逛}2、有些方法需要返回值也需要参数,比如:实例2:我今天下班后去超市买一箱牛奶实例2分析:方法构成需要花*出*钱方法有参数买*回*一箱牛奶方法有返回值实例2可以用以下方法来模拟int逛超市(double钱){//花*出*钱return一箱牛奶;}三、ref,out的用法对于实例2:我今天下班后去超市买一箱牛奶实际我们有很多模拟的方式,如:方式1,方式2,方式3方式1:用*有*参数*有*返回值的方法来模拟,如上方法构成需要花*出*钱方法有参数,用一个参数{默认参数,传入值}买*回*一
3、箱牛奶方法有返回值{用return返回值,传出值}方式2:用*有*参数*没有*返回值的方法来模拟,让函数增加一个out参数,让这个参数起到返回值的作用即传出值。方法构成需要花*出*钱方法有参数,一个为默认参数{传入值}另一个为out参数{传出值}买*回*一箱牛奶方法有返回值{不用return返回值,而用out参数返回值,传出值}实例2还可以用以下方法来模拟:void逛超市(float钱,outint买的东西){//花*出*钱买的东西=一箱牛奶;}方式3:方式2模拟这件事情用了两个参数,能不能少用一个参数呢。只用一个
4、参数既起到传入也起到传出值的作用。OK!选用ref参数方法构成需要花*出*钱方法有参数,只有一个ref参数{传入值和传出值}买*回*一箱牛奶方法有返回值{不用return返回值,而用ref参数返回值,传出值}实例2还可以用以下方法来模拟:void逛超市(refdouble钱_买的东西){//花*出*钱钱_买的东西=一箱牛奶;}四、ref,out何时用,用在哪里1、是一种可选的解决方案:做一件事情,往往有很多方法可以选择,如果一个方法需要返回值,我们可以选择ref或out参数,如上面的例子。如果只需要方法传出值,选o
5、ut参数即可如果需要方法既传入值也传出值,选ref参数2、是一种最好的解决方案:比如:某人面试了一家单位,他不但想知道是否要他,还想知道要他或不要他的原因再如:连接数据库,想知道连接是否成功,如果连接不成功,还想知道不成功的原因生活中实例多如牛毛:去超市买东西,交给收款员货币,你得到的不仅是要买的物品,还有找零,赠品,,,,总之,当一个函数需要返回多种不同类型值的时候,往往可以使用ref,out参数,如boolCon_DB_Cle(stringconStr,refstringwhy){try{//why="";re
6、turntrue;}catch(Exceptione){//why=e.ToString();returnfalse;}}五、ref,out用在哪里,让我们看看类库,类库用的不多啊!!例子1:System..::.Uri.TryCreate方法:..::使用指定基和相对Uri实例创建一个新的Uri。如果成功创建了Uri,则方法返回值为true;否则为false。publicstaticboolTryCreate(UribaseUri,UrirelativeUri,outUriresult//此方法返回时,包含从ba
7、seUri和relativeUri构造的Uri)publicstaticboolTryCreate(stringuriString,UriKinduriKind,outUriresult)例子2:protectedoverrideboolSystem.Data.SqlClient.SqlDataAdapter.GetBatchedRecordsAffected(intcommandIdentifier,outintrecordsAffected,outSystem.Exceptionerror)六、ref,out的
8、使用原则【依据VS.NET2008msdn>.NETFramework开发人员指南】方法参数可以通过值,通过引用传递,也可以作为输出参数传递。通过值传递参数时,方法获取调用方数据的副本,但不能改变调用方的数据副本。通过引用传递参数时,方法获取指向调用方数据的指针。此数据与调用方共享。如果方法对引用参数做出更改,则这些更改是对调用方的数据进行的。使用引用参数时
此文档下载收益归作者所有