流程控制語(yǔ)句與函數(shù)_第1頁(yè)
流程控制語(yǔ)句與函數(shù)_第2頁(yè)
流程控制語(yǔ)句與函數(shù)_第3頁(yè)
流程控制語(yǔ)句與函數(shù)_第4頁(yè)
流程控制語(yǔ)句與函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第5章流程控制語(yǔ)句與函數(shù)5.1控制程序流程5.2使用選擇語(yǔ)句5.3使用循環(huán)語(yǔ)句5.4使用goto語(yǔ)句5.5嵌套使用流程控制語(yǔ)句5.6函數(shù)5.7常用內(nèi)部函數(shù)5.8小結(jié)25.1控制程序流程控制程序流程的方法很多,主要有如下3種:選擇語(yǔ)句:如同考試中的單選題目,選擇執(zhí)行了某條語(yǔ)句,另一條就不會(huì)再執(zhí)行。循環(huán)語(yǔ)句:在需要將一個(gè)表達(dá)式進(jìn)行多次重復(fù)運(yùn)算時(shí),可以使用循環(huán)語(yǔ)句,指定其循環(huán)次數(shù)或者界定其退出循環(huán)的條件。goto語(yǔ)句:即標(biāo)記語(yǔ)句,使程序自動(dòng)跳到標(biāo)記語(yǔ)句處執(zhí)行,標(biāo)記語(yǔ)句執(zhí)行完畢又直接回到調(diào)用標(biāo)記語(yǔ)句處。需要注意的是,在程序中最好不使用goto語(yǔ)句,因?yàn)樵撜Z(yǔ)句會(huì)使得程序代碼可讀性很差。35.2使用選擇語(yǔ)句5.2.1if語(yǔ)句用if語(yǔ)句實(shí)現(xiàn)單分支選擇結(jié)構(gòu):if(表達(dá)式)語(yǔ)句;語(yǔ)句中的表達(dá)式通常用于表示條件,應(yīng)為關(guān)系表達(dá)式或邏輯表達(dá)式。語(yǔ)句只是一條語(yǔ)句,如果在條件滿足時(shí)需要執(zhí)行多條語(yǔ)句,應(yīng)使用花括號(hào)({})括起來(lái),使之成為語(yǔ)句塊?!?表達(dá)式)”中的括號(hào)不能省略。45.2.1if語(yǔ)句示例:staticvoidMain(string[]args){doublescore;score=Convert.ToDouble(Console.ReadLine());if(score>=60)Console.WriteLine("恭喜你,通過了這次考試!");Console.Read();}55.2.1if語(yǔ)句用if語(yǔ)句實(shí)現(xiàn)雙分支選擇結(jié)構(gòu):

if(表達(dá)式)

語(yǔ)句1;else

語(yǔ)句2;65.2.1if語(yǔ)句用if語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)If(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;……else語(yǔ)句n;75.2.2switch語(yǔ)句在C#語(yǔ)言中,除使用if語(yǔ)句實(shí)現(xiàn)多分支外,也可以使用switch語(yǔ)句。switch(表達(dá)式){case常量表達(dá)式1:

語(yǔ)句1;

break;case常量表達(dá)式2:

語(yǔ)句2;

break;……case常量表達(dá)式n:

語(yǔ)句n;

break;default:

語(yǔ)句n+1;

break;}85.2.2switch語(yǔ)句switch表達(dá)式的類型為sbyte、byte、short、ushort、int、uint、long、ulong、char、string、枚舉或用戶自定義類型。每個(gè)case分支中的常量表達(dá)式必須能隱式轉(zhuǎn)換為switch表達(dá)式的類型,且常量表達(dá)式的值不能相同,從而保證分支選擇的唯一性。如果某個(gè)分支有多條語(yǔ)句,可以用花括號(hào)括起來(lái),也可以不加花括號(hào)。default分支可有可無(wú),但是每個(gè)switch語(yǔ)句最多只能有一個(gè)default分支。當(dāng)default語(yǔ)句缺省時(shí),如果switch后面的表達(dá)式值與任意常量表達(dá)式值不相等,將不執(zhí)行任何語(yǔ)句,直接退出switch語(yǔ)句。各分支語(yǔ)句中的break不可省略,否則將會(huì)出現(xiàn)錯(cuò)誤,這一點(diǎn)跟Java和C++不同。使用switch語(yǔ)句時(shí)一定要注意,case后面必須是常量表達(dá)式,以冒號(hào)結(jié)束而不是分號(hào)。95.2.2switch語(yǔ)句示例:staticvoidMain(string[]args){doublescore;charclass1;inti;Console.WriteLine("請(qǐng)輸入你的成績(jī):");score=Convert.ToDouble(Console.ReadLine());i=(int)score/10;switch(i){case10:case9:class1='A';break;case8:class1='B';break;case7:class1='C';break;case6:class1='D';break;default:class1='E';break;}Console.WriteLine("你的成績(jī)等級(jí)為:{0}",class1);}105.2.3switch語(yǔ)句的控制類型switch語(yǔ)句的控制可以按case語(yǔ)句的排列先后順序進(jìn)行,也可以通過跳轉(zhuǎn)語(yǔ)句來(lái)實(shí)現(xiàn)。示例:實(shí)現(xiàn)switch語(yǔ)句的跳轉(zhuǎn)語(yǔ)句。

staticvoidMain(string[]args){intdays=0;intmonth=3;switch(month){case1:case3:case5:case7:case8:case10:case12:days=31;break;case2:days=28;break;case4:case6:case9:case11:days=30;break;default:days=0;break;}Console.WriteLine("thismonthhas{0}days",days);}115.3使用循循環(huán)語(yǔ)語(yǔ)句語(yǔ)句while語(yǔ)句是是用來(lái)來(lái)實(shí)現(xiàn)現(xiàn)循環(huán)環(huán)的語(yǔ)語(yǔ)句,,該類類循環(huán)環(huán)先測(cè)測(cè)試循循環(huán)條條件再再執(zhí)行行循環(huán)環(huán)體,,按照照不同同條件件執(zhí)行行循環(huán)環(huán)體部部分零零次或或多次次。它它的語(yǔ)語(yǔ)法形形式如如下。。while(表達(dá)式式)循環(huán)體體部分分;12語(yǔ)句注意::循環(huán)體體如果果包含含一條條以上上的語(yǔ)語(yǔ)句,,應(yīng)以以花括括號(hào)括括起來(lái)來(lái)作為為復(fù)合合語(yǔ)句句。在循環(huán)環(huán)體中中,通通常應(yīng)應(yīng)包含含改變變循環(huán)環(huán)條件件表達(dá)達(dá)式值值的語(yǔ)語(yǔ)句,,否則則便會(huì)會(huì)造成成無(wú)限限循環(huán)環(huán)。由于先先判斷斷條件件,可可能出出現(xiàn)第第一次次測(cè)試試條件件時(shí),,表達(dá)達(dá)式的的值就就為false。此種種情況況下循循環(huán)體體將一一次也也不執(zhí)執(zhí)行,,又稱稱“允允許0次循環(huán)環(huán)”。。13語(yǔ)句示例::classTestWhile{staticvoidMain(string[]args){intnumber=1,sum=0;while(number<=10){sum+=number;number++;}Console.WriteLine("thesumis{0}",sum);Console.Read();}}執(zhí)行上上述代代碼,,運(yùn)行行結(jié)果果為::thesumis55。14語(yǔ)句do循環(huán)語(yǔ)語(yǔ)句實(shí)實(shí)現(xiàn)的的是直直到型型循環(huán)環(huán),該該類循循環(huán)先先執(zhí)行行循環(huán)環(huán)體再再測(cè)試試循環(huán)環(huán)條件件。do循環(huán)體體語(yǔ)句句while(表達(dá)式式);15語(yǔ)句示例::classTestWhile{staticvoidMain(string[]args){intnumber=1,sum=0;do{sum+=number;number++;}while(number<=10);Console.WriteLine("thesumis{0}",sum);Console.Read();}}執(zhí)行行上上述述代代碼碼,,運(yùn)運(yùn)行行結(jié)結(jié)果果為為::thesumis55。16語(yǔ)句句for(表達(dá)達(dá)式式1;表達(dá)達(dá)式式2;表達(dá)達(dá)式式3)語(yǔ)句句;17語(yǔ)句句表達(dá)達(dá)式式1、2、3都可可以以省省略略,,分分號(hào)號(hào)不不能能省省略略。。如如果果表表達(dá)達(dá)式式1、2、3都省省略略,,則則將將無(wú)無(wú)終終止止地地執(zhí)執(zhí)行行循循環(huán)環(huán)體體。。表達(dá)達(dá)式式2是循循環(huán)環(huán)控控制制條條件件,,如如果果省省略略,,循循環(huán)環(huán)將將無(wú)無(wú)終終止止地地進(jìn)進(jìn)行行下下去去。。表達(dá)達(dá)式式1一般般用用于于為為循循環(huán)環(huán)控控制制條條件件賦賦初初值值,,也也可可以以是是與與循循環(huán)環(huán)變變量量無(wú)無(wú)關(guān)關(guān)的的其其他他表表達(dá)達(dá)式式。。如如果果表表達(dá)達(dá)式式1省略略或或者者是是與與循循環(huán)環(huán)條條件件無(wú)無(wú)關(guān)關(guān)的的其其他他表表達(dá)達(dá)式式,,則則應(yīng)應(yīng)該該在在for語(yǔ)句句之之前前給給循循環(huán)環(huán)控控制制條條件件賦賦初初值值。。表達(dá)式3一般用于于改變循循環(huán)控制制條件的的值。如如果表達(dá)達(dá)式3省略或者者是其他他與循環(huán)環(huán)條件無(wú)無(wú)關(guān)的表表達(dá)式,,則應(yīng)該該在循環(huán)環(huán)體中另另有語(yǔ)句句改變循循環(huán)條件件,以保保證循環(huán)環(huán)能正常常結(jié)束。。18語(yǔ)句foreach(類型標(biāo)標(biāo)識(shí)符符in表達(dá)式)嵌入語(yǔ)句句;示例:staticvoidMain(string[]args){int[]list={10,20,30,40,50,60};foreach(intiinlist)Console.Write("{0,-5}",i);Console.Read();}19語(yǔ)句和continue語(yǔ)句break語(yǔ)句用于于跳出包包含它的的switch、while、do、for、foreach語(yǔ)句。如果break不是在switch、while、do、for、foreach語(yǔ)句塊中中,將發(fā)發(fā)生編譯譯錯(cuò)誤。。當(dāng)switch、while、do、for、foreach語(yǔ)句相互互嵌套時(shí)時(shí),break語(yǔ)句只是是跳出直直接包含含它的語(yǔ)語(yǔ)句塊。。20語(yǔ)句和continue語(yǔ)句classTestBreak{staticvoidMain(string[]args){for(inti=0;i<10;i++){Console.Write("enteraword:");strings=Console.ReadLine();if(s=="end")break;Console.WriteLine("youentered:{0}",s);}Console.Read();}}215.3.5break語(yǔ)句和continue語(yǔ)句continue語(yǔ)句類似于于break語(yǔ)句,也必必須用于while、dowhile、for、foreach語(yǔ)句,它只只從循環(huán)的的當(dāng)前迭代代中退出,,然后在循循環(huán)的下一一次迭代開開始重新執(zhí)執(zhí)行,而不不是退出循循環(huán)。需要注意如如下事項(xiàng):continue語(yǔ)句的目標(biāo)標(biāo)地址為直直接包含它它的while、dowhile、for或者foreach語(yǔ)句的嵌套套語(yǔ)句結(jié)尾尾。假如continue語(yǔ)句不能被被while、dowhile、for或者foreach語(yǔ)句包含,,將發(fā)生編編譯錯(cuò)誤。。當(dāng)有while、dowhile、for或者foreach語(yǔ)句相互嵌嵌套時(shí),continue語(yǔ)句只適用用于直接包包含它的語(yǔ)語(yǔ)句塊。225.3.5break語(yǔ)句和continue語(yǔ)句示例staticvoidMain(string[]args){for(inti=0;i<10;i++){Console.Write("enteraword:");strings=Console.ReadLine();if(s=="end")continue;Console.WriteLine("youentered:{0}",s);}Console.Read();}235.4使用goto語(yǔ)句goto語(yǔ)句是除選選擇語(yǔ)句、、循環(huán)語(yǔ)句句之外的控控制程序流流程的語(yǔ)句句,常用于于將程序流流程轉(zhuǎn)移出出嵌套范圍圍。goto語(yǔ)句的常見見用法為gotolable語(yǔ)句。其中中,lable為一個(gè)標(biāo)簽簽,其語(yǔ)語(yǔ)法形式為為:標(biāo)簽1:245.4使用goto語(yǔ)句示例:staticvoidMain(string[]args){intn=1,sum=0;lable:if(n<=5){sum=sum+n;n++;gotolable;}Console.WriteLine("sum={0}",sum);Console.Read();}255.5嵌套使用流流程控制語(yǔ)語(yǔ)句選擇結(jié)構(gòu)的的嵌套::if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1else語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3else語(yǔ)句4265.5嵌套使用流流程控制語(yǔ)語(yǔ)句循環(huán)結(jié)構(gòu)的的嵌套示例:staticvoidMain(string[]args){inti=1,a=0;for(;i<=5;i++){do{i++;a++;}while(i<3);i++;}Console.WriteLine("a的值為{0},i的值為{1}",a,i);Console.ReadLine();}275.6函數(shù)函數(shù)的定義義與使用函數(shù)在使用用之前必須須先定義,,函數(shù)定義義的形式如如下。函數(shù)修飾符符數(shù)據(jù)類型標(biāo)標(biāo)識(shí)符函函數(shù)名名(形式參數(shù)說說明列表){變量、數(shù)組組的定義語(yǔ)語(yǔ)句;其他可執(zhí)行行部分}函數(shù)的返回回值是需要要返回給主主調(diào)函數(shù)的的處理結(jié)果果,由return語(yǔ)句給出。。對(duì)于無(wú)返回回值的函數(shù)數(shù),其類型型標(biāo)識(shí)符為為void,不需要return語(yǔ)句28函數(shù)的定義義與使用示例:編寫寫一個(gè)函數(shù)數(shù),用于求求任意兩個(gè)個(gè)整數(shù)之間間所有數(shù)的的平方和。。classProgram{privatestaticintpfh(intx,inty){inti,sum=0;for(i=x;i<=y;i++)sum=sum+i*i;return(sum);}}29函數(shù)的定義義與使用函數(shù)的使用用:在類中的某某個(gè)函數(shù)中中,調(diào)用本本類中由“函數(shù)名”指定的函數(shù)數(shù),其語(yǔ)法法形式如下下:函數(shù)名([實(shí)際參數(shù)列表表])調(diào)用另一個(gè)類類的非靜態(tài)函函數(shù),其語(yǔ)法法形式如下::對(duì)象名.方法名([實(shí)際參數(shù)列表表])調(diào)用另一個(gè)類類的靜態(tài)函數(shù)數(shù),其語(yǔ)法形形式如下:類名.方法名([實(shí)際參數(shù)列表表])30函數(shù)的參數(shù)傳傳遞參數(shù)傳遞中的的類型轉(zhuǎn)化示例:classProgram{staticfloatSqr(floatk){return(k*k);}staticvoidMain(string[]args){inty;floatyy;y=6;yy=Sqr(y);Console.WriteLine("{0}的平方是{1}",y,yy);Console.ReadLine();}}31函數(shù)的參數(shù)傳傳遞參數(shù)傳遞的類類型:值傳遞時(shí)參數(shù)的語(yǔ)法法形式如下::參數(shù)類型參參數(shù)名引用傳遞時(shí)參數(shù)的語(yǔ)法法形式如下::ref參數(shù)類型參參數(shù)名輸出傳遞時(shí)參數(shù)的語(yǔ)法法形式如下::out參數(shù)類型參參數(shù)名參數(shù)數(shù)組:使用params關(guān)鍵字聲明參參數(shù),參數(shù)個(gè)個(gè)數(shù)為不確定定。32函數(shù)的參數(shù)傳傳遞值傳遞參數(shù)示例:classProgram{staticvoidswap(inta,intb){inti;i=a;a=b;b=i;}staticvoidMain(string[]args){intx,y;Console.WriteLine("請(qǐng)輸入x和y的值:");x=Convert.ToInt32(Console.ReadLine());y=Convert.ToInt32(Console.ReadLine());swap(x,y);Console.WriteLine("轉(zhuǎn)換后x和y的值為:{0},{1}",x,y);Console.ReadLine();}}33函數(shù)的參數(shù)傳傳遞引用傳遞參數(shù)示例:classProgram{staticvoidswap(refinta,refintb){inti;i=a;a=b;b=i;}staticvoidMain(string[]args){intx,y;Console.WriteLine("請(qǐng)輸入x和y的值:");x=Convert.ToInt32(Console.ReadLine());y=Convert.ToInt32(Console.ReadLine());swap(refx,refy);Console.WriteLine("轉(zhuǎn)換后x和y的值為:{0},{1}",x,y);Console.ReadLine();}}34函數(shù)的參數(shù)傳傳遞輸出傳遞參數(shù)示例:classProgram{staticvoidswap(outinta,outintb){inti;a=Convert.ToInt32(Console.ReadLine());b=Convert.ToInt32(Console.ReadLine());i=a;a=b;b=i;}staticvoidMain(string[]args){intx,y;swap(outx,outy);Console.WriteLine("轉(zhuǎn)換后x和y的值為:{0},{1}",x,y);Console.ReadLine();}}35Ref與out的區(qū)別:out關(guān)鍵字會(huì)導(dǎo)致致參數(shù)通過引引用來(lái)傳遞,,這與ref關(guān)鍵字類似。。不同之處在于于:(1)ref傳進(jìn)去的參數(shù)數(shù)必須在調(diào)用用前初始化,,而out不必,因?yàn)閛ut的函數(shù)會(huì)先清清空變量,即即使變量已經(jīng)經(jīng)賦值。inti;SomeMethod(refi);//語(yǔ)法錯(cuò)錯(cuò)誤SomeMethod(outi);//通過36Ref與out的區(qū)別別:(2)ref傳進(jìn)去去的參參數(shù)在在函數(shù)數(shù)內(nèi)部部可以以直接接使用用,而而out不可。。publicvoidSomeMethod(refinti){intj=i;//通過//...}publicvoidSomeMethod(outinti){intj=i;//語(yǔ)法錯(cuò)錯(cuò)誤}(3)ref傳進(jìn)去去的參參數(shù)在在函數(shù)數(shù)內(nèi)部部可以以不被被修改改,但但out必須在在離開開函數(shù)數(shù)體前前進(jìn)行行賦值值。37usingsystem;classtestapp{staticvoidouttest(outintx,outinty){//離開這這個(gè)函函數(shù)前前,必必須對(duì)對(duì)x和y賦值,,否則則會(huì)報(bào)報(bào)錯(cuò)。。//y=x;//上面這這行會(huì)會(huì)報(bào)錯(cuò)錯(cuò),因因?yàn)槭故褂昧肆薿ut后,x和y都清空空了,,需要要重新新賦值值,即即使調(diào)調(diào)用函函數(shù)前前賦過過值也也不行行x=1;y=2;}staticvoidreftest(refintx,refinty){y=x;}38publicstaticvoidmain(){inta,b;//out使用前前,變變量可可以不不賦值值outtest(outa,outb);console.writeline("a={0};b={1}",a,b);intc=11,d=22;outtest(outc,outd);console.writeline("c={0};d={1}",c,d);intm,n;//reftest(refm,refn);//上面這這行會(huì)會(huì)出錯(cuò)錯(cuò),ref使用前前,變變量必必須賦賦值into=11,p=22;reftest(refo,refp);console.writeline("o={0};p={1}",o,p);}39(4)ref:當(dāng)需要要通過過調(diào)用用某函函數(shù)來(lái)來(lái)改變變實(shí)參參變量量的值值時(shí),,使用用ref。out:主要是是為了了一個(gè)個(gè)方法法能返返回兩兩個(gè)以以上的的結(jié)果果。Ref與out的區(qū)別別:當(dāng)一個(gè)個(gè)方法法需要要多個(gè)個(gè)返回回值時(shí)時(shí),靠靠方法法返回回值((return)就不不能勝勝任,,幸好好.Net有out和ref關(guān)鍵字字。比如::登錄錄方法法,登登錄結(jié)結(jié)果有有成功功和失失敗,,但是是如果果失敗敗還要要知道道原因因。僅僅靠返返回值值就不不行了了,這這個(gè)就就可以以用out。boolLogin(stringname,stringpassword,outstringerrMsg){………}out方法參數(shù)數(shù)傳遞前前可以不不賦值,,但是方方法中必必須先賦賦值后使使用;ref方法參數(shù)數(shù)傳遞前前必須賦賦值,方方法中可可以直接接使用。。out側(cè)重輸出出(方法法傳遞前前,不知知道值,,調(diào)用方方法后獲獲得值)),ref側(cè)重更改改(調(diào)用用方法前前就有明明確的值值,方法法中發(fā)生生更改))。那么剛才才登陸的的例子到到底用ref還是out呢?這樣樣分析::如果成成功是不不需要errMsg的,如果果失敗調(diào)調(diào)用前errMsg的實(shí)參是是不需要要賦值的的,所以以應(yīng)該側(cè)側(cè)重于輸輸出,使使用out比較合適適。40注:※對(duì)于值型變量量作為方法法參數(shù)時(shí)時(shí),可以有如如上所述述三種情情況:1.沒有ref和out修飾(直接傳值值,不能改變變實(shí)參)2.使用ref修飾(引用傳遞遞,輸入,可以改變變實(shí)參)3.使用out修飾(引用傳遞遞,輸出,可以改變變實(shí)參)※對(duì)于引用類型型的變量的的三種情情況:1.沒有ref和out修飾(引用傳遞遞,可以改變變實(shí)參)2.使用ref修飾(與1類似。但但如果在在被調(diào)用用函數(shù)里里面把傳傳過來(lái)的的類=null,我們就可可以看出出區(qū)別了了)3.使用out修飾(引用傳遞遞,可以以改變實(shí)實(shí)參)Ref與out的區(qū)別::41函數(shù)的參參數(shù)傳遞遞參數(shù)數(shù)組組有時(shí)需要要傳遞的的參數(shù)個(gè)個(gè)數(shù)不確確定,例例如求幾幾個(gè)數(shù)的的平均值值??梢砸允褂胮arams關(guān)鍵字聲聲明參數(shù)數(shù)的個(gè)數(shù)數(shù)為不確確定。42函數(shù)的參參數(shù)傳遞遞參數(shù)數(shù)組組示例:classProgram{publicstaticfloatAverage(paramslong[]array){longtotal=0,i;for(i=0;i<array.Length;i++){total=total+array[i];}return((float)total/array.Length);}staticvoidMain(string[]args){floatx=Average(1,2,3,5);Console.WriteLine("1、2、3、5的平均值值為{0}",x);x=Average(10,20,35,52);Console.WriteLine("10、20、35、52的平均值值為{0}",x);Console.ReadLine();}}43內(nèi)聯(lián)函數(shù)數(shù)對(duì)于一些些功能簡(jiǎn)簡(jiǎn)單、規(guī)規(guī)模較小小又使用用頻繁的的函數(shù),,CLR會(huì)做出是是否使用用內(nèi)聯(lián)函函數(shù)的判判斷。內(nèi)內(nèi)聯(lián)函數(shù)數(shù)不在調(diào)調(diào)用時(shí)發(fā)發(fā)生控制制轉(zhuǎn)移,,而是在在編譯時(shí)時(shí)將函數(shù)數(shù)體嵌入入在每一一個(gè)調(diào)用用處,這這樣就節(jié)節(jié)省了參參數(shù)傳遞遞、控制制轉(zhuǎn)移等等消耗。。注意:在在何處內(nèi)內(nèi)聯(lián)代碼碼完全由由CLR判斷得出出,無(wú)法法使用諸諸如C++中inline的關(guān)鍵字字來(lái)控制制哪些方方法是內(nèi)內(nèi)聯(lián)的。。44函數(shù)重載載函數(shù)重載載允許一一個(gè)類中中有同名名的函數(shù)數(shù)存在,,即一個(gè)個(gè)類中可可以存在在兩個(gè)以以上的函函數(shù)名稱稱相同。。重載函數(shù)數(shù)的形參參必須不不同,可可以個(gè)數(shù)數(shù)不同或或者類型型不同。。示例:intadd(intx,inty);intadd(inta,intb);//錯(cuò)誤!編編譯器不不以形參參名來(lái)區(qū)區(qū)分函數(shù)數(shù)intadd(intx,inty);voidadd(intx,inty);//錯(cuò)誤!編譯譯器不以返返回值來(lái)區(qū)區(qū)分函數(shù)45函數(shù)重載示例:classProgram{publicstaticintAdd(inti,intj){returni+j;}publicstaticstringAdd(strings1,strings2){returns1+s2;}publicstaticlongAdd(longx){returnx+5;}staticvoidMain(string[]args){Console.WriteLine(Add(1,2));Console.WriteLine(Add("1","2"));Console.WriteLine(Add(10));Console.ReadLine();}}465.7常用內(nèi)部函函數(shù)隨機(jī)函數(shù)介介紹在C#中要生成隨隨機(jī)數(shù)需要要使用Random類。該類類的主要方方法是Next方法,它生生成一個(gè)介介于兩個(gè)整數(shù)之間的隨機(jī)機(jī)數(shù),其語(yǔ)語(yǔ)法形式如如下:publicvirtualintNext([intminValue,intmaxValue]);47隨機(jī)函數(shù)介介紹示例:classProgram{staticvoidMain(string[]args){Randomop1=newRandom(10);Randomop2=newRandom();intresult;result=op1.Next(10,99)+op2.Next(0,9);Console.WriteLine(result);Console.Read();}}由于結(jié)果是是隨機(jī)值,,所以這里里不再描述述運(yùn)行結(jié)果果,48格式化函數(shù)數(shù)介紹.NET為處理數(shù)字字、日期以以及字符串串的格式化化提供了WriteLine方法、Format方法和ToString方法。通過過WriteLine方法和Format方法可對(duì)多多個(gè)變量進(jìn)進(jìn)行格式化化,ToString方法只能對(duì)對(duì)一個(gè)變量量進(jìn)行格式式化。對(duì)于使用WriteLine方法和Format方法格式化化字符串,,規(guī)定格式式的一般語(yǔ)語(yǔ)法形式如如下。{N,[M][:格式碼精精度]}49格式化函數(shù)數(shù)介紹{N,[M][:格式碼精精度]}[]:表示其中中的內(nèi)容為為可選項(xiàng)。。N:表示要格格式化的參參數(shù)的索引引。M:可選參數(shù)數(shù),表示格格式化后的的參數(shù)所占占的寬度。。如果M是負(fù)數(shù),那那么格式化化后的值就就是左對(duì)齊齊的;如果果M是正數(shù),那那么格式化化后的值是是右對(duì)齊的的;如果未未指定M,則默認(rèn)為為零。格式碼:可可選的格式式化代碼字字符串。精度:格式式化輸出的的有效位數(shù)數(shù)或小數(shù)位位數(shù)。50//部分?jǐn)?shù)值格格式輸出方方式的例子子usingSystem;classFormating{publicstaticvoidMain(){Console.WriteLine("在寬度為的的空間里靠靠左對(duì)齊:{0,-10}",99);Console.WriteLine("在寬度為的的空間里靠靠右對(duì)齊:{0,10}",99);Console.WriteLine("在寬度為的的空間里靠靠左對(duì)齊:{0,-10}","LLL");Console.WriteLine("在寬度為的的空間里靠靠右對(duì)齊:{0,10}","RRR");Console.WriteLine("貨幣-{0:C}{1:C4}",88.8,-888.8);Console.WriteLine("10進(jìn)制整數(shù)-{0:D5}",88);Console.WriteLine("科學(xué)計(jì)數(shù)-{0:E}",888.8);Console.WriteLine("固定小數(shù)點(diǎn)點(diǎn)-{0:F3}",888.8888);Console.WriteLine("浮點(diǎn)數(shù)-{0:G}",888.8888);Console.WriteLine("數(shù)字格式-{0:N}",8888888.8);Console.WriteLine("16進(jìn)制格式-{0:X4}",88);Console.ReadLine();}}intval1=0;Intval2=123;stringval3="一個(gè)占位符符例子";Console.WriteLine("Values:{0},{1},這是{2}",val1,val2,val3);{N,[M][:格式碼精精度]}51日期函數(shù)介介紹用于處理時(shí)時(shí)間和日期期的對(duì)象為為DateTime結(jié)構(gòu)和TimeSpan類。DateTime結(jié)構(gòu)用于表表示日期和和時(shí)間,表表示范圍在在0001年1月1日午夜00:00:00到9999年12月31日晚上11:59:59之間間的的日日期期和和時(shí)時(shí)間間,,最最小小時(shí)時(shí)間間單單位位等等于于100納秒秒。。TimeSpan類可可以以表表示示一一個(gè)個(gè)時(shí)時(shí)間間間間隔隔,,表表示示范范圍圍可可以以在在Int64.MinValue到Int64.MaxValue之間間。。52日期期函函數(shù)數(shù)介介紹紹DateTime結(jié)構(gòu)構(gòu)的的常常用用方法法如下下::AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds方法法,,用用于于將將指指定定的的年年、、月月、、日日、、時(shí)時(shí)、、分分、、秒秒加加到到DateTime上。。Substract方法法::日日期期相相減減。。IsLeapYear方法法::判判斷斷是是否否為為閏閏年年。。true為閏閏年年,,false為非非閏閏年年。。ToLongDateString和ToLongTimeString方法法::把把DateTime轉(zhuǎn)換換為為字字符符串串,,且且以以長(zhǎng)長(zhǎng)格格式式表表示示日日期期或或時(shí)時(shí)間間。。ToShortDateString和ToShortTimeString方法法::把把DateTime轉(zhuǎn)換換為為字字符符串串,,且且以以短短格格式式表表示示日日期期或或時(shí)時(shí)間間。。==、!=、<、>、>=、<=運(yùn)算算符符::用用于于比比較較日日期期。。+、-運(yùn)算算符符::用用于于日日期期的的加加、、減減。。53數(shù)學(xué)學(xué)運(yùn)運(yùn)算算函函數(shù)數(shù)介介紹紹Math類屬屬于于命命名名空空間間System,包包含含很很多多數(shù)數(shù)學(xué)學(xué)函函數(shù)數(shù)。。常用用方方法法如如下下::Abs方法法::返返回回值值指指定定數(shù)數(shù)字字的的絕絕對(duì)對(duì)值值。。例例如如,,代代碼碼Math.Abs(-3.5),結(jié)結(jié)果果為為3.5。Sqrt方法法::返返回回指指定定數(shù)數(shù)字字的的平平方方根根。。例例如如,,代代碼碼Math.Sqrt(9),結(jié)結(jié)果果為為3。Pow方法法::返返回回指指定定數(shù)數(shù)字字的的指指定定次次冪冪。。例例如如,,代代碼碼Math.Pow(2,3),結(jié)結(jié)果果為為8。Log方法法::返返回回指指定定數(shù)數(shù)字字的的對(duì)對(duì)數(shù)數(shù)。。例例如如,,代代碼碼Math.Log(8,2),結(jié)結(jié)果果為為3。Log10方法法::返返回回指指定定數(shù)數(shù)字字以以10為底底的的對(duì)對(duì)數(shù)數(shù)。。例例如如,,代代碼碼Math.Log10(100),結(jié)結(jié)果果為為2。54數(shù)學(xué)學(xué)運(yùn)運(yùn)算算函函數(shù)數(shù)介介紹紹Sin、Cos、Tan、Asin、Acos、Atan方法法::返返回回指指定定弧弧度度的的正正弦弦值值、、余余弦弦值值、、正正切切值值、、反反正正弦弦值值、、反反余余弦弦值值、、反反正正切切值值。。例例如如,,代代碼碼Math.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論