00110 方法和傳遞參數(shù)_ref和out的用法_第1頁
00110 方法和傳遞參數(shù)_ref和out的用法_第2頁
00110 方法和傳遞參數(shù)_ref和out的用法_第3頁
00110 方法和傳遞參數(shù)_ref和out的用法_第4頁
00110 方法和傳遞參數(shù)_ref和out的用法_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、陳利娥 博文ref和out的應(yīng)用要深刻理解ref和out的應(yīng)用,不僅從語法的角度,更要從面向?qū)ο蟆綩O】的角度去理解和把握。一、首先應(yīng)該真正理解“方法”方法:1、語法的角度:略2、OO的角度:方法是對現(xiàn)實(shí)行為或操作的一種模擬比如:學(xué)生的上課,考試,面試等行為都可以用方法來模擬,【方法包含普通方法,虛方法,抽象方法,】二、這里我們要重點(diǎn)討論方法的返回值1、有些方法不需要返回值,比如:實(shí)例1:我今天心情好,下班后去逛超市,但是不買任何東西實(shí)例1分析:方法構(gòu)成不需要花錢方法無參數(shù)不買任何東西方法無返回值實(shí)例1可以用以下方法來模擬void 逛超市()/隨意逛逛2、有些方法需要返回值也需要參數(shù),比如:實(shí)

2、例2:我今天下班后去超市買一箱牛奶實(shí)例2分析:方法構(gòu)成需要花*出*錢方法有參數(shù)買*回*一箱牛奶方法有返回值實(shí)例2可以用以下方法來模擬int 逛超市(double 錢)/花*出*錢 return 一箱牛奶;三、ref ,out的用法對于實(shí)例2:我今天下班后去超市買一箱牛奶實(shí)際我們有很多模擬的方式,如:方式1,方式2,方式3方式1:用*有*參數(shù)*有*返回值的方法來模擬,如上方法構(gòu)成需要花*出*錢方法有參數(shù),用一個參數(shù)默認(rèn)參數(shù),傳入值買*回*一箱牛奶方法有返回值用return返回值,傳出值方式2:用*有*參數(shù)*沒有*返回值的方法來模擬,讓函數(shù)增加一個out參數(shù),讓這個參數(shù)起到返回值的作用即傳出值。方

3、法構(gòu)成需要花*出*錢方法有參數(shù), 一個為默認(rèn)參數(shù) 傳入值 另一個為out參數(shù)傳出值買*回*一箱牛奶方法有返回值不用return返回值,而用out參數(shù)返回值,傳出值實(shí)例2還可以用以下方法來模擬:void 逛超市(float 錢, out int 買的東西)/花*出*錢 買的東西= 一箱牛奶;方式3:方式2模擬這件事情用了兩個參數(shù),能不能少用一個參數(shù)呢。只用一個參數(shù)既起到傳入也起到傳出值的作用。OK!選用ref 參數(shù)方法構(gòu)成需要花*出*錢方法有參數(shù), 只有一個ref參數(shù)傳入值和傳出值買*回*一箱牛奶方法有返回值不用return返回值,而用ref參數(shù)返回值,傳出值實(shí)例2還可以用以下方法來模擬:voi

4、d 逛超市(ref double 錢_買的東西)/花*出*錢 錢_買的東西= 一箱牛奶;四、ref ,out何時用,用在哪里1、是一種可選的解決方案:做一件事情,往往有很多方法可以選擇,如果一個方法需要返回值,我們可以選擇ref或out參數(shù),如上面的例子。如果只需要方法傳出值,選out參數(shù)即可如果需要方法既傳入值也傳出值,選ref參數(shù)2、是一種最好的解決方案:比如:某人面試了一家單位,他不但想知道是否要他,還想知道要他或不要他的原因再如:連接數(shù)據(jù)庫,想知道連接是否成功,如果連接不成功,還想知道不成功的原因生活中實(shí)例多如牛毛:去超市買東西,交給收款員貨幣,你得到的不僅是要買的物品,還有找零,贈品

5、,總之,當(dāng)一個函數(shù)需要返回多種不同類型值的時候,往往可以使用ref ,out參數(shù),如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 實(shí)例創(chuàng)建一個新的 Uri。如果成功創(chuàng)建了 Uri,則方法返回值為 true;否則為 fal

6、se。public static bool TryCreate(Uri baseUri,Uri relativeUri,out Uri result /此方法返回時,包含從 baseUri 和 relativeUri 構(gòu)造的 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的使用原則【依據(jù)VS.NET2008 msdn>.NET Framework 開發(fā)人員指南】方法參數(shù)可以通過值,通過引用傳遞,也可以作為輸出參數(shù)傳遞。通過值傳遞參數(shù)時,方法獲取調(diào)用方數(shù)據(jù)的副本,但不能改變調(diào)用方的數(shù)據(jù)副本。通過引用傳遞參數(shù)時,方法獲取指向調(diào)用方數(shù)據(jù)的指針。此數(shù)據(jù)與調(diào)用方共享。如果方法對引用參數(shù)做出更改,則這些更改是對調(diào)用方的數(shù)據(jù)進(jìn)行的。使用引用參數(shù)時,方法可以使用數(shù)據(jù)的初始狀態(tài)。輸出參數(shù)與引用參數(shù)類似,不同之處在于,輸出參數(shù)以獨(dú)占

8、方式用于向調(diào)用方返回數(shù)據(jù),而引用參數(shù)可用于將數(shù)據(jù)傳入方法,也可用于從方法中接收數(shù)據(jù)。 避免使用輸出參數(shù)或引用參數(shù)。使用定義輸出參數(shù)或引用參數(shù)的成員需要開發(fā)人員理解指針、值類型和引用類型之間的細(xì)微差別以及輸出參數(shù)和引用參數(shù)之間的初始化差異。不要通過引用傳遞引用類型。通過引用傳遞一個對象使方法能夠用不同的實(shí)例替換該對象。在大多數(shù)情況下,方法應(yīng)使用提供的對象,而不應(yīng)將其替換。對于此規(guī)則,有一些少量的例外(例如,可用于交換引用的方法)。 部分版權(quán)所有 2005 Microsoft Corporation。保留所有權(quán)利。 部分版權(quán)所有 Addison-Wesley Corporation。保留所有權(quán)利。 有關(guān)設(shè)計指南的更多信息,請參見 Krzysztof Cwalina 和 Brad Abrams 編著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(框架設(shè)計指南:可重用 .NET 庫的約定、術(shù)語和模式)。七、ref ,out的區(qū)別?經(jīng)典面試題ref ,out的區(qū)別?簡記1作用ref參數(shù)既可以由方法調(diào)用端向方法傳入值,也可以由方法向方法調(diào)用端

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論