函數(shù)-參數(shù)省公開課一等獎全國示范課微課金獎_第1頁
函數(shù)-參數(shù)省公開課一等獎全國示范課微課金獎_第2頁
函數(shù)-參數(shù)省公開課一等獎全國示范課微課金獎_第3頁
函數(shù)-參數(shù)省公開課一等獎全國示范課微課金獎_第4頁
函數(shù)-參數(shù)省公開課一等獎全國示范課微課金獎_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2.8函數(shù)定義定義函數(shù)語法static返回值類型函數(shù)名(參數(shù)類型參數(shù)1,參數(shù)類型參數(shù)2,…

…,參數(shù)類型參數(shù)n){return返回值;//這個值類型必須和前面返

回值類型一致}沒有返回值方法,返回值類型寫為void,return語句能夠省略或者后面不接返回值。沒有參數(shù)函數(shù)也要在函數(shù)后面寫上空()調(diào)用函數(shù)語法函數(shù)名(參數(shù)1,參數(shù)2,…

…,參數(shù)n);第1頁2.8函數(shù)定義例:staticintAdd(intnum1,intnum2){returnnum1+num2;}staticvoidMain(){inta=3;intb=6;intc=Add(a,b);Console.WriteLine(c);}

函數(shù)定義和調(diào)用練習(xí)第2頁2.8函數(shù)定義返回值假如定義函數(shù)時(shí),函數(shù)返回值類型不是void,函數(shù)體內(nèi)必須包含return語句,函數(shù)執(zhí)行必須以return語句結(jié)束return后面為該函數(shù)執(zhí)行結(jié)果,能夠是一個詳細(xì)值,也能夠是表示式,但其數(shù)據(jù)類型必須和已申明返回值類型一致每個函數(shù)最多只能有一個返回值,返回值類型為void函數(shù)中能夠包含return語句,但return后面直接加分號,而不能提供任何返回值。常見編譯錯誤“并非全部路徑都有返回值”,第3頁例:staticboolIntEqual(inta,intb){if(a==b)returntrue;}第4頁2.9參數(shù)參數(shù)函數(shù)中定義參數(shù)時(shí),要指定參數(shù)類型,參數(shù)名稱,參數(shù)次序,隱含參數(shù)個數(shù)參數(shù)匹配在調(diào)用函數(shù)時(shí),必須使參數(shù)與函數(shù)中指定參數(shù)完全匹配,也就是要匹配參數(shù)個數(shù)、類型和次序。第5頁2.9.1參數(shù)匹配參數(shù)匹配staticintIntSubstract(inta,intb){returna-b;}staticvoidMain(){intnum1=5;intnum2=3;intc=IntSubstract(num1,num2);Console.WriteLine(c);}第6頁2.9.2值參數(shù)和引用參數(shù)假如函數(shù)參數(shù)是值類型或者string類型,而且沒有特殊說明,則該參數(shù)為值參數(shù)函數(shù)值參數(shù)是用于調(diào)用函數(shù)時(shí)把一個值傳遞給函數(shù)使用。在函數(shù)中對此變量進(jìn)行任何修改都不影響該參數(shù)原始值。例:staticvoidShowDouble(intval) { val=val*2; Console.WriteLine(“valdoubledis{0}”,val); } staticvoidMain() { intmyNum=5; Console.WriteLine(“myNumis{0}”,myNum); ShowDouble(myNum); Console.WriteLine(“myNumis{0}”,myNum); }第7頁2.9.2值參數(shù)和引用參數(shù)假如函數(shù)參數(shù)本身是string以外引用類型或者參數(shù)前面使用ref關(guān)鍵字修飾,則該參數(shù)為引用參數(shù)在函數(shù)中對此引用參數(shù)進(jìn)行修改直接影響該參數(shù)原始值。例:staticvoidShowDouble(refintval) { val=val*2; Console.WriteLine(“valdoubledis{0}”,val); } staticvoidMain() { intmyNum=5; Console.WriteLine(“myNumis{0}”,myNum); ShowDouble(refmyNum); Console.WriteLine(“myNumis{0}”,myNum); }第8頁2.9.2值參數(shù)和引用參數(shù)引用參數(shù)使用小結(jié)引用參數(shù)定義:在參數(shù)類型前添加ref關(guān)鍵字,表明該參數(shù)為引用型參數(shù)在調(diào)用函數(shù)時(shí),指定該參數(shù)也要在參數(shù)前添加ref關(guān)鍵字需要注意是:常量不能作為引用型參數(shù)傳遞;必須使用初始化過變量。第9頁2.9.2值參數(shù)和引用參數(shù)值參數(shù):函數(shù)調(diào)用完成后,參數(shù)內(nèi)存被釋放掉,

參數(shù)不發(fā)生改變;引用參數(shù):函數(shù)定義和調(diào)用時(shí)變量相通,所以

對這個變量進(jìn)行任何改變,都會影響

參數(shù)值。第10頁【例1】下面程序演示了當(dāng)方法Sort傳遞是值參數(shù)時(shí),對形參修改不影響其實(shí)參。usingSystem;classMyclass{publicvoidSort(intx,inty,intz) { inttmp;//tmp是方法Sort局部變量

//將x,y,z按從小到大排序

if(x>y){tmp=x;x=y;y=tmp;} if(x>z){tmp=x;x=z;z=tmp;} if(y>z){tmp=y;y=z;z=tmp;} }}2.9.2值參數(shù)和引用參數(shù)第11頁classTest{staticvoidMain(){ Myclassm=newMyclass(); inta,b,c; a=30;b=20;c=10; m.Sort(a,b,c); Console.WriteLine("a={0},b={1},c={2}",a,b,c); Console.Read();}}運(yùn)行結(jié)果如圖所表示:

方法值參數(shù)傳遞運(yùn)行結(jié)果2.9.2值參數(shù)和引用參數(shù)第12頁【例2】將【例1】程序中Sort方法值參數(shù)傳遞方式改成引用參數(shù)傳遞,這么在方法Sort中對參數(shù)x、y、z按從小到大排序影響了調(diào)用它實(shí)參a、b、c。usingSystem;classMyclass{ publicvoidSort(refintx,refinty,refintz) { inttmp;//tmp是方法Sort局部變量

//將x,y,z按從小到大排序

if(x>y){tmp=x;x=y;y=tmp;} if(x>z){tmp=x;x=z;z=tmp;} if(y>z){tmp=y;y=z;z=tmp;} }}2.9.2值參數(shù)和引用參數(shù)第13頁classTest{ staticvoidMain() { Myclassm=newMyclass(); inta,b,c; a=30;b=20;c=10; m.Sort(refa,refb,refc); Console.WriteLine("a={0},b={1},c={2}",a,b,c); Console.Read(); }}運(yùn)行結(jié)果如圖所表示。引用參數(shù)傳遞方式運(yùn)行結(jié)果2.9.2值參數(shù)和引用參數(shù)第14頁2.9.3輸出參數(shù)輸出參數(shù)一個函數(shù)最多只有一個返回值,假如非常希望返回多個值能夠使用輸出參數(shù),用out關(guān)鍵字修飾能夠把未賦值變量作為out參數(shù)使用,而且最好是未賦值(因?yàn)樵搮?shù)值會在函數(shù)執(zhí)行過程中被改變,原有值就會丟失)在調(diào)用函數(shù)時(shí),指定該參數(shù)也要在參數(shù)前添加out關(guān)鍵字需要注意是:常量不能作為引用型參數(shù)傳遞。例:求一個整型數(shù)組中最大元素值及該元素下標(biāo)第15頁【例3】求一個數(shù)組元素中最大值、最小值以及平均值。希望得到三個返回值,顯然用方法返回值不能處理,而且這三個值必須經(jīng)過計(jì)算得到,初始值沒有意義,所以處理方案能夠定義三個out參數(shù)。usingSystem;classMyclass{

publicvoidMaxMinArray(int[]a,outintmax,outintmin,outdoubleavg) { intsum; sum=max=min=a[0]; for(inti=1;i<a.Length;i++) { if(a[i]>max)max=a[i]; if(a[i]<min)min=a[i]; sum+=a[i]; }

2.9.3輸出參數(shù)第16頁avg=sum/a.Length; }}classTest{ staticvoidMain() { Myclassm=newMyclass(); int[]score={87,89,56,90,100,75,64,45,80,84}; intsmax,smin; doublesavg; m.MaxMinArray(score,outsmax,outsmin,outsavg); Console.Write("Max={0},Min={1},Avg={2}",smax,smin,savg); Console.Read(); }}2.9.3輸出參數(shù)第17頁運(yùn)行結(jié)果如圖所表示。ref和out參數(shù)使用并不局限于值類型參數(shù),它們也可用于引用類型來傳遞對象。2.9.3輸出參數(shù)第18頁課堂練習(xí)1計(jì)算某數(shù)組全部元素最大值、最小值及對應(yīng)索引值。要求經(jīng)過編寫函數(shù)實(shí)現(xiàn)。(1)添加函數(shù)GetMaxAndIndex(),求數(shù)組中最大值及索引計(jì)算,將最大值保留在引用參數(shù)中,將索引值作為返回值返回。(2)添加函數(shù)GetMinAndIndex(),求數(shù)組中最小值及索引計(jì)算,將最小值和索引值均作為返回值返回。第19頁2.9.4參數(shù)數(shù)組4.參數(shù)數(shù)組普通而言,調(diào)用方法時(shí)其實(shí)參必須與該方法申明形參在類型和數(shù)量上相匹配,但有時(shí)候我們更希望靈活一些,能夠給方法傳遞任意個數(shù)參數(shù),比如在三個數(shù)中找最大、最小和在5個數(shù)中找最大、最小甚或任意多個數(shù)中找最大、最小能使用同一個方法。C#提供了傳遞可變長度參數(shù)表機(jī)制,即使用params關(guān)鍵字來指定一個參數(shù)可變長參數(shù)表?!纠?】求一組數(shù)和第20頁2.9.4參數(shù)數(shù)組staticvoidMain(string[]args)

{intsum=SumVals(1,2,5);//任意一組數(shù)Console.WriteLine(sum);

}//參數(shù)數(shù)組,表示在一組數(shù)中返回一個特定值staticintSumVals(paramsint[]vals)

{intsum=0;foreach(intvalinvals)

{sum+=val;

}returnsum;

}

第21頁2.9.4參數(shù)數(shù)組從上面例程中能夠看出設(shè)置可變參數(shù)非常方便也很實(shí)用。但在使用時(shí)要注意以下幾點(diǎn):(1)一個方法中只能申明一個params參數(shù),假如還要其它常規(guī)參數(shù),則params參數(shù)應(yīng)放在參數(shù)表最終。(2)用params修飾符申明參數(shù)是一個一維

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論