




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、outout 關(guān)鍵字會(huì)導(dǎo)致參數(shù)通過引用來傳遞。 這與 ref 關(guān)鍵字類似, 不同之處在于 ref 要求變 量必須在傳遞之前進(jìn)行初始化。 若要使用 out 參數(shù), 方法定義和調(diào)用方法都必須顯式使用 out 關(guān)鍵字。 例如:class OutExamplestaticvoid Method( out int i)10 / 8i = 44;staticvoid Main()value;out value);intMethod(/ value is now 44盡管作為 out 參數(shù)傳遞的變量不必在傳遞之前進(jìn)行初始化,但被調(diào)用的方法需要在返回之 前賦一個(gè)值。盡管 ref 和 out 關(guān)鍵字會(huì)導(dǎo)致不同的
2、運(yùn)行時(shí)行為, 的一部分。 因此,如果兩個(gè)方法唯一的區(qū)別是:一個(gè)接受 數(shù),則無法重載這兩個(gè)方法。 例如,不會(huì)編譯下面的代碼:但在編譯時(shí)并不會(huì)將它們視為方法簽名ref 參數(shù),另一個(gè)接受 out 參 個(gè)人收集整理 勿做商業(yè)用途class CS0663_Example/ Compiler error CS0663: "Cannot define overloaded個(gè)人收集整理 勿做商業(yè)用/ methods that differ only on ref and out". public void SampleMethod( out int public void SampleMe
3、thod( ref inti) i) 但是,如果一個(gè)方法采用 ref 或 out 參數(shù), 重載,如下所示: 個(gè)人收集整理 勿做商業(yè)用途而另一個(gè)方法不采用這兩類參數(shù),則可以進(jìn)行class OutOverloadExamplepublic void SampleMethod( int i) out int i) i = 5; Public void SampleMethod( 屬性不是變量,因此不能作為out參數(shù)傳遞。有關(guān)傳遞數(shù)組的信息,請(qǐng)參見做商業(yè)用途使用ref和out傳遞數(shù)組(C#編程指南)。個(gè)人收集整理勿示例out方法很有用。下面的示例使用 out在一次方法調(diào)用Null。這樣使方法可以有選擇
4、地返回當(dāng)希望方法返回多個(gè)值時(shí),聲明中返回三個(gè)變量。請(qǐng)注意,第三個(gè)參數(shù)所賦的值為值。個(gè)人收集整理勿做商業(yè)用途class OutRetur nExa mple整理static勿做商業(yè)用途void Method( out int i, out strings1, out string s2)個(gè)人收集i = 44;s1 ="I've bee n retur ned"s2 =nullstaticvoid Mai n()intvalue;stri ngstr1, str2;Method(out value, out str1, out st;/ value is now 44
5、/ str1 is now "I've bee n returned"/ str2 is (still) n ull;C#語言規(guī)范有關(guān)更多信息,請(qǐng)參見 C# Language Specification 。C#語言規(guī)范是 C#語法和用法的權(quán) 威資料。個(gè)人收集整理勿做商業(yè)用途IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII個(gè)人收集整理勿做商業(yè)用途ref (C# 參考)Visual Studio 2010ref關(guān)鍵字使參數(shù)按引用傳遞。其效果是,當(dāng)控制權(quán)傳遞回調(diào)用方法時(shí),在
6、方法中對(duì)參數(shù)的任何更改 都將反映在該變量中。個(gè)人收集整理勿做商業(yè)用途說明不要將通過引用傳遞”概念與引用類型”概念相混淆。這兩個(gè)概念不相關(guān);方法參數(shù)無論是值類型還 是引用類型,都可通過 ref進(jìn)行修飾。 因此,通過引用傳遞值類型時(shí)沒有值類型裝箱。若要使用ref參數(shù),則方法定義和調(diào)用方法都必須顯式使用ref關(guān)鍵字。 例如:class RefExample staticvoid Method( ref int i)i = 44;staticvoid Main()int Method(val = 0; ref val);/ val is now 44傳遞到ref參數(shù)的參數(shù)必須最先初始化。這與out不同
7、,后者的參數(shù)在傳遞之前不需要顯式初始化。有關(guān)更多信息,請(qǐng)參見 out O個(gè)人收集整理勿做商業(yè)用途盡管ref和out關(guān)鍵字會(huì)導(dǎo)致不同的運(yùn)行時(shí)行為, 因此,如果兩個(gè)方法唯一的區(qū)別是:一個(gè)接受 ref 方法。 例如,不會(huì)編譯下面的代碼: 個(gè)人收集整理但在編譯時(shí)并不會(huì)將它們視為方法簽名的一部分。 參數(shù),另一個(gè)接受 out參數(shù),則無法重載這兩個(gè) 勿做商業(yè)用途class CS0663_Exampie個(gè)人收集整理/ Comp iler error CS0663: "Ca nnot define overloaded勿做商業(yè)用途/ methods that differ only on ref an
8、d out".out int i) ref int i) P ublicvoidp ublicvoidSamp leMethod(Samp leMethod(ref或out參數(shù),但是,如果一個(gè)方法采用下例所示:個(gè)人收集整理勿做商業(yè)用途而另一個(gè)方法不采用這兩個(gè)參數(shù),則可以進(jìn)行重載,如class RefOverloadExamplepublic void SampleMethod( public void SampleMethod(intrefi) int i) 屬性不是變量。它們實(shí)際上是方法,因此不能作為ref參數(shù)進(jìn)行傳遞。有關(guān)如何傳遞數(shù)組的信息,請(qǐng)參見 使用ref和out傳遞數(shù)組(C
9、#編程指南)。個(gè)人收集整理勿做商 業(yè)用途示例按引用傳遞值類型(如本主題前面所示)是有用的,但是ref對(duì)于傳遞引用類型也是很有用的。這允許被調(diào)用的方法修改該引用所引用的對(duì)象,因?yàn)橐帽旧硎前匆脕韨鬟f的。下面的示例顯示岀當(dāng)引用類型作為ref參數(shù)傳遞時(shí),可以更改對(duì)象本身。 有關(guān)更多信息,請(qǐng)參見傳遞引用類型參數(shù)(C# 編程指南)。個(gè)人收集整理勿做商業(yè)用途staticclass RefExa mple2 void Method( ref string s)"changed"staticvoid Main()stri ng str ="origi nal"Meth
10、od( ref str); Co nsole.WriteLi ne(str);/ Output: cha ngedC#語言規(guī)范llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll個(gè)人收集整理勿做商業(yè)用途使用ref和out傳遞數(shù)組(C#編程指南)Visual Studio 2010首選項(xiàng)”然后選此內(nèi)容為質(zhì)量更高的人工翻譯。若想同時(shí)查看此頁面和原始英文頁面的內(nèi)容,請(qǐng)單擊 擇 經(jīng)典視圖”作為您的查看首選項(xiàng)。 個(gè)人收集整理 勿做商業(yè)用途與所有的out參數(shù)一樣,在使用數(shù)組類型的out參數(shù)前必須先為其賦值,即必
11、須由被調(diào)用方為其賦 值。例如:個(gè)人收集整理勿做商業(yè)用途staticarr =void TestMethod1(new int 10;out int arr)/ defi nite assig nment of arr與所有的值??梢詫?shù)組類型的ref參數(shù)更改為調(diào)用的結(jié)果。 化為另一個(gè)數(shù)組。例如:個(gè)人收集整理勿做商業(yè)用途ref參數(shù)一樣,數(shù)組類型的ref參數(shù)必須由調(diào)用方明確賦值。因此不需要由接受方明確賦例如,可以為數(shù)組賦以null值,或?qū)⑵涑跏約tatic void TestMethod2( ref int arr) arr = new int 10;個(gè)人收集整理勿做商業(yè)用途/ arr in it
12、ialized to a differe nt arrayF面的兩個(gè)示例說明 out與ref在將數(shù)組傳遞給方法時(shí)的用法差異。示例在此例中,在調(diào)用方(Main方法)中聲明數(shù)組theArray,并在FillArray方法中初始化此數(shù)組。然后將數(shù)組元素返回調(diào)用方并顯示。個(gè)人收集整理 勿做商業(yè)用途class TestOutstatic void FillArray(out int arr)/I nitialize the array:arr =staticvoid Main()int theArray; / Initialization is not required/ Pass the array
13、to the callee using out: FillArray( out theArray);/ Display the array elements:System.Console.WriteLine( "Array elements are:"for ( int i = 0; i < theArray.Length; i+)System.Console.Write(theArrayi +" " ););/ Keep the console window open in debug mode. System.Console.WriteLine
14、(整理 勿做商業(yè)用途"Press any key to exit."); 個(gè)人收集System.Console.ReadKey();/* Output:Array elements are:1 2 3 4 5*/在此例中,在調(diào)用方( Main 方法)中初始化數(shù)組 方法。 在 FillArray 方法中更新某些數(shù)組元素。 做商業(yè)用途theArray ,并通過使用 ref 參數(shù)將其傳遞給 FillArray 然后將數(shù)組元素返回調(diào)用方并顯示。 個(gè)人收集整理 勿new int 5 1, 2, 3, 4, 5 ;class TestRefstatic void FillArray(
15、ref int arr) / Create the array on demand: if (arr = null )arr =new int 10;/ Fill the array: arr0 = 1111;arr4 = 5555; static void Main() / Initialize the array: int theArray = 1, 2, 3, 4, 5 ;/ Pass the array using ref: FillArray( ref theArray);/ Display the updated array:System.Console.WriteLine("Array elements are:"for ( int i = 0; i < theArray.Length; i+)System.Console.Writ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年勞動(dòng)合同工齡延續(xù)模板
- 一年級(jí)下冊(cè)數(shù)學(xué)教案-4.5求減數(shù)的簡(jiǎn)單實(shí)際問題 蘇教版
- 二年級(jí)數(shù)學(xué)下冊(cè)教案-6.1 認(rèn)識(shí)角(4)-北師大版
- 2025年學(xué)習(xí)雷鋒精神六十二周年主題活動(dòng)方案
- 學(xué)習(xí)2025年雷鋒精神62周年主題活動(dòng)方案 (合計(jì)3份)
- 2025年廣東工貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫參考答案
- 2025年湖北國土資源職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫及答案1套
- 《雁門太守行》歷年中考古詩欣賞試題匯編(截至2024年)
- 《春望》歷年中考古詩欣賞試題匯編(截至2024年)
- 2025年杭州科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫及參考答案
- 醫(yī)療服務(wù)價(jià)格政策培訓(xùn)
- 經(jīng)典廣告歌曲大全(109首)
- 2024年湖南省公務(wù)員考試《行測(cè)》真題及答案解析
- 2024-2025學(xué)年北京市豐臺(tái)某中學(xué)九年級(jí)(上)開學(xué)數(shù)學(xué)試卷(含答案)
- 環(huán)保儀器培訓(xùn)
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)4 擺臺(tái)技能(2)-中餐宴會(huì)擺臺(tái)
- 2024湖南省水利廳直屬事業(yè)單位招聘擬聘用人員歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 財(cái)務(wù)崗位招聘筆試題及解答(某大型國企)2025年
- 《計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)》課程教案(完整版)
- 追覓在線測(cè)評(píng)題
- 洋車夫課件教學(xué)課件
評(píng)論
0/150
提交評(píng)論