《ASPNET程序設(shè)計(jì)實(shí)用教程》_第1頁(yè)
《ASPNET程序設(shè)計(jì)實(shí)用教程》_第2頁(yè)
《ASPNET程序設(shè)計(jì)實(shí)用教程》_第3頁(yè)
《ASPNET程序設(shè)計(jì)實(shí)用教程》_第4頁(yè)
《ASPNET程序設(shè)計(jì)實(shí)用教程》_第5頁(yè)
已閱讀5頁(yè),還剩61頁(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、第第2章章 C#程序設(shè)計(jì)基礎(chǔ)程序設(shè)計(jì)基礎(chǔ) 內(nèi)容提要n本章主要分析本章主要分析C#的語(yǔ)法,的語(yǔ)法,C#作為作為.NET的原生語(yǔ)言,功能非常強(qiáng)大。的原生語(yǔ)言,功能非常強(qiáng)大。n作為作為ASP.NET的編程基礎(chǔ),主要分析的編程基礎(chǔ),主要分析C#的變量、常量、控制語(yǔ)句、的變量、常量、控制語(yǔ)句、C#類的基本類的基本使用方法、使用方法、C#的異常處理和的異常處理和C#語(yǔ)言面語(yǔ)言面向?qū)ο蟮母呒?jí)特性。向?qū)ο蟮母呒?jí)特性。 C#概述 nC#是微軟公司專門為.NET量身定做的編程語(yǔ)言,它與.NET有著密不可分的關(guān)系。nC#的類型就是.NET框架所提供的類型,C#本身并無(wú)類庫(kù),而是直接使用.NET框架所提供的類庫(kù)。n另

2、外,類型安全檢查、結(jié)構(gòu)化異常處理也都是交給CLR處理的。因此,C#是最適合開發(fā).NET應(yīng)用的編程語(yǔ)言。 C#的特點(diǎn) nC#不僅具有C+的強(qiáng)大功能,而且具有Visual Basic簡(jiǎn)單易用的特性。C#的語(yǔ)法與C+基本相同。如果以前對(duì)C+非常熟悉的話,學(xué)習(xí)C#則是一件非常容易的事情。n默認(rèn)情況下,C#代碼在.NET框架提供的受控環(huán)境下運(yùn)行,不允許直接操作內(nèi)存。它帶來(lái)最大的變化是C#沒有了C和C+中的指針。與此相關(guān)的,那些在C+中被大量使用的指針操作符已經(jīng)不再出現(xiàn)。C#只支持一個(gè)“.” C#程序結(jié)構(gòu) 案例名稱:第一個(gè)案例名稱:第一個(gè)C#程序程序程序名稱:程序名稱:2-01.csusingSystem

3、;classHellopublicstaticvoidMain()Console.WriteLine(您好!);C#編譯器 n.NET Framework SDK內(nèi)置了C#編譯器“csc.exe(C Sharp Compiler)”,該文件在“WINNTMicrosoft.NETFrameworkv版本號(hào)”目錄下。n如果不能執(zhí)行該命令,需要將該目錄添加到操作系統(tǒng)的PATH變量中。可以在命令窗口編譯C#文件,假如要編譯名為1-01.cs的C#文件。命令行的語(yǔ)法為:ncsc 2-01.cs不用不用using導(dǎo)入名字空間導(dǎo)入名字空間案例名稱:不用案例名稱:不用using導(dǎo)入名字空間導(dǎo)入名字空間程序名

4、稱:程序名稱:2-02.csclassHellopublicstaticvoidMain()System.Console.WriteLine(您好!);程序的輸入和輸出 案例名稱:利用案例名稱:利用ReadLine()讀入數(shù)據(jù)讀入數(shù)據(jù)程序名稱:程序名稱:2-03.csusingSystem;classHellopublicstaticvoidMain()Console.Write(“請(qǐng)輸入你的名字:”);stringstr_bookName=Console.ReadLine();Console.WriteLine(您好!0,str_bookName);命令行參數(shù) 案例名稱:使用命令行參數(shù)案例名

5、稱:使用命令行參數(shù)程序名稱:程序名稱:2-04.csusingSystem;publicclassHellopublicstaticvoidMain(stringargs)Console.WriteLine(你共有0個(gè)朋友,args.Length);Console.WriteLine(你的朋友列表為:);for(inti=0;iargs.Length;i+)Console.WriteLine(Arg0=1,i,argsi);C#注釋 案例名稱:使用注釋案例名稱:使用注釋程序名稱:程序名稱:2-05.csusingSystem;classHellostaticvoidMain()/*聲明一個(gè)Da

6、teTime變量t并將當(dāng)前日期賦給t*/DateTimet=DateTime.Today;stringstr_Time;/聲明一個(gè)字符串變量str_Timestr_Time=t.ToLongDateString();Console.WriteLine(當(dāng)前日期是:0,str_Time);C#的數(shù)據(jù)結(jié)構(gòu) nC#的數(shù)據(jù)類型分為值類型(Value Type)和引用類型(Reference Type)兩大類。n值類型包括簡(jiǎn)單類型(Simple Type)、結(jié)構(gòu)類型(Struct Type)和枚舉類型(Enum Type)3種。引用類型包括類類型(Class Type)、數(shù)組類型(Array Type)

7、和代表類型(Delegate Type)。 變量和常量 nC#是大小寫敏感的,即大寫和小寫字母認(rèn)為是不同的字母。例如變量名something,Something,SOMETHING都是不同的名字。n命名變量名要遵守如下的規(guī)則:n不能是C#關(guān)鍵字。n第一個(gè)字符必須是字母或下劃線。n不要太長(zhǎng),一般不超過31個(gè)字符為宜。n不能以數(shù)字開頭n中間不能有空格n變量名中不能包含“.;,”+-”之類的特殊符號(hào)。實(shí)際上,變量名中除了能使用26個(gè)英文大小寫字母和數(shù)字外,只能使用下劃線“_”。n變量名不要與C+中的庫(kù)函數(shù)名、類名和對(duì)象名相同。使用常量使用常量案例名稱:使用常量案例名稱:使用常量程序名稱:程序名稱:2

8、-06.csusingSystem;classHellopublicconstdoublePI=3.14159265;staticvoidMain()Console.WriteLine(“圓周率PI的值為0”,PI);值類型 n值類型,也稱為簡(jiǎn)單類型,是直接由一系列元素構(gòu)成的數(shù)據(jù)類型。nC#語(yǔ)言中提供了一組已經(jīng)定義好了簡(jiǎn)單類型。n可以分為整整類型、布爾類型、字符類型和實(shí)數(shù)類型。 整整類型 n整整類型的變量的值為整數(shù)。計(jì)算機(jī)的存儲(chǔ)單元是有限的,所以計(jì)算機(jī)語(yǔ)言提供的整數(shù)類型的值總是在一定的范圍之內(nèi)。nC#中有九種整數(shù)類型,這些整數(shù)類型在數(shù)學(xué)上的表示以及在計(jì)算機(jī)中的取值范圍如表2-1所示。 整整類型

9、整整類型整整類型特征取值類型sbyte有符號(hào)8位整數(shù)-128-127byte無(wú)符號(hào)8位整數(shù)0-255short有符號(hào)16位整數(shù)-32768-32767ushort無(wú)符號(hào)16位整數(shù)0-65535int有符號(hào)32位整數(shù)-2147483648-2147483647uint無(wú)符號(hào)32位整數(shù)0-4294967295long有符號(hào)64位整數(shù)-9223372036854775808-9223372036854775807ulong無(wú)符號(hào)64位整數(shù)0-18446744073709551615使用整整類型使用整整類型案例名稱:使用整整類型案例名稱:使用整整類型程序名稱:程序名稱:2-07.csusingSyst

10、em;classHellopublicstaticvoidMain()shortx=32766;x+;Console.WriteLine(x);x+;Console.WriteLine(x);布爾類型 n布爾類型是用來(lái)表示“真”和“假”的。布爾類型表示的邏輯變量只有兩種取值。在C#中,分別采用true和false兩個(gè)值來(lái)表示。n在C語(yǔ)言中,用0來(lái)表示“假”,其他任何非零的值表示真。在C#中,布爾型變量只能是true或者false。實(shí)數(shù)類型 n實(shí)數(shù)在C#中采用兩種數(shù)據(jù)類型來(lái)表示:?jiǎn)尉龋╢loat)和雙精度(double)。它們的區(qū)別在于取值范圍和精度不同。n單精度:取值范圍在正負(fù)1.5*10-

11、45到3.4*1038之間,精度為七位。n雙精度:取值范圍在正負(fù)5.0*10-324到1.7*10308之間,精度為15-16位。字符類型 n字符包括數(shù)字字符、英文字母和表達(dá)符號(hào)等等,C#提供的字符類型按照國(guó)際標(biāo)準(zhǔn),采用Unicode字符集。一個(gè)Unicode的標(biāo)準(zhǔn)字符長(zhǎng)度為16位,用它可以來(lái)表示世界上大多數(shù)語(yǔ)言。給一個(gè)變量賦值的語(yǔ)法為:nchar mychar=M;n也可以直接通過十六進(jìn)制或者Unicode賦值。nchar mychar=x0034;/mychar=4nchar mychar=u0039;/mychar=9枚舉類型 案例名稱:使用枚舉類型案例名稱:使用枚舉類型程序名稱:程序名

12、稱:2-09.csusingSystem;enumWeekDaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;classTeststaticvoidMain()WeekDayday;/聲明WeekDay的實(shí)例day;day=WeekDay.Sunday;Console.WriteLine(day的值是0,day);引用類型 nC#中的另一大數(shù)據(jù)類型是引用類型?!耙谩钡暮x是:該類型的變量不直接存儲(chǔ)所包含的值,而是存儲(chǔ)所要存儲(chǔ)值的地址。nC#中的引用類型有四種:類、數(shù)組、代表和接口。 類 n類是面向?qū)ο缶幊痰幕締挝唬且环N包

13、含數(shù)據(jù)成員、函數(shù)成員的數(shù)據(jù)結(jié)構(gòu)。類的數(shù)據(jù)成員有變量、域和事件。函數(shù)成員包括方法、屬性、構(gòu)造函數(shù)和析構(gòu)函數(shù)等等。類和結(jié)構(gòu)同樣都包含了自己的成員,但他們之間最主要在于:類是引用類型,而結(jié)構(gòu)是值類型。n類支持繼承機(jī)制,通過繼承,派生可以擴(kuò)展類的數(shù)據(jù)成員和函數(shù)方法,進(jìn)而達(dá)到代碼重用和設(shè)計(jì)重用的目的。 數(shù)組 案例名稱:使用數(shù)組類型案例名稱:使用數(shù)組類型程序名稱:程序名稱:2-10.csusingSystem;classteststaticvoidMain()intarr1=newint2;intarr2=newint1,2,3;stringarr3=six,is,me;int,arr4=1,2,3,4;

14、int,arr5=newint3,4;for(inti=0;iarr1.Length;i+)arr1i=i*i*i;Console.WriteLine(arr10=1,i,arr1i);for(inti=0;i4;i+)for(intj=0;j3;j+)arr5j,i=i*j;Console.WriteLine(arr50,1=2,j,i,arr5j,i);代表 程序名稱:使用代表程序名稱:使用代表程序名稱:程序名稱:2-11.csusingSystem;delegateintmydelegate();classmyclasspublicintInstMethod()Console.Write

15、Line(CalltheInstMethod.);return0;classTeststaticpublicvoidMain()myclassp=newmyclass();mydelegated=newmydelegate(p.InstMethod);d();/指代p.InstMethod接口 n接口描述了組件對(duì)外提供的服務(wù)。在組件和組件之間、組件和客戶之間都通過接口進(jìn)行交互。n因此組件一旦發(fā)布,它只能通過預(yù)先定義的接口來(lái)處理合理的、一致的服務(wù)。操作符與控制語(yǔ)句 n表達(dá)式由操作數(shù)和操作符來(lái)構(gòu)造。表達(dá)式的操作符指示出對(duì)操作數(shù)采取哪種操作。操作符的例子包括+、-、*、/和new。操作數(shù)的例子包括文

16、字、域、局部變量和表達(dá)式。n有三種類型的操作符:n一元操作符。一元操作符有一個(gè)操作數(shù)并且或是使用前綴符號(hào)(例如-x)或是使用后綴符號(hào)(例如x+)。n二元操作符。二元操作符有兩個(gè)操作數(shù)并且使用中間符號(hào)(例如x + y)。n三元操作符。只有一個(gè)三元操作符?:。三元操作符有三個(gè)操作數(shù)并且使用中間符號(hào) (c? x: y)。算術(shù)操作符 案例名稱:使用算術(shù)操作符案例名稱:使用算術(shù)操作符程序名稱:程序名稱:2-13.csusingSystem;enumWeekdaySunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;classteststatic

17、voidMain()stringmystr1=你好!;stringmystr2=小劉;stringmystr3=mystr1+mystr2;Weekdayd1=Weekday.Sunday;Weekdayd2=d1+3;Console.WriteLine(d1=0,d2=1,d1,d2);Console.WriteLine(mystr3);賦值操作符 n賦值就是給一個(gè)變量傳一個(gè)新的值。在C#中,賦值分為簡(jiǎn)單賦值和復(fù)合賦值兩大類。n操作符“=”是簡(jiǎn)單賦值操作符號(hào)。復(fù)合賦值操作符號(hào)包括+=、-=、*=、/=、%=、|=、/、=。邏輯操作符 nC#提供的邏輯運(yùn)算符有三個(gè),就是邏輯與(&)、邏

18、輯或(|)和邏輯非(!)。n其中,邏輯與和邏輯或是二元操作符,要求有兩個(gè)操作數(shù);而邏輯非是一元操作符,只要求一個(gè)操作數(shù)。分支語(yǔ)句n分支語(yǔ)句依據(jù)一個(gè)控制表達(dá)式的值,從一系列可能被執(zhí)行的語(yǔ)句選擇出要執(zhí)行的語(yǔ)句。n包括兩種語(yǔ)句:if語(yǔ)句和switch語(yǔ)句。使用使用if語(yǔ)句語(yǔ)句案例名稱:使用案例名稱:使用if語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-14.csusingSystem;classHellopublicstaticvoidMain()Console.Write(請(qǐng)輸入你的名字:);stringstr_userName=Console.ReadLine();if(str_userName=six)Co

19、nsole.WriteLine(您好!0,哎呀,是您??!,str_userName);elseConsole.WriteLine(0是哪棵蔥?,str_userName);switch語(yǔ)句 案例名稱:使用案例名稱:使用switch語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-15.csusingSystem;classSamplepublicstaticvoidMain()intmyage=10;stringmystr;switch(myage)case10:mystr=還是小孩!;break;case25:mystr=可以結(jié)婚了!;break;default:mystr=不對(duì)吧!你到底多大!;break;

20、Console.WriteLine(小子,你0,mystr);循環(huán)語(yǔ)句 n在 C# 中可使用循環(huán)語(yǔ)句有4種格式:ndo-while: 當(dāng)(或直到)條件為 True 時(shí)循環(huán)。 nwhile: 當(dāng)條件為 True 時(shí)循環(huán)。 nfor: 指定循環(huán)次數(shù),使用計(jì)數(shù)器重復(fù)運(yùn)行語(yǔ)句。 nfor each: 對(duì)于集合中的每項(xiàng)或數(shù)組中的每個(gè)元素,重復(fù)執(zhí)行。do-while循環(huán) 案例名稱:案例名稱:do-while循環(huán)循環(huán)程序名稱:程序名稱:2-16.csusingSystem;classtestpublicstaticvoidMain()intsum=0;/初始值設(shè)置為0inti=1;/加數(shù)初始值為1dosum

21、+=i;i+;while(i=100);Console.WriteLine(從0到100的和是0,sum);While循環(huán) 案例名稱:使用案例名稱:使用while語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-17.csusingSystem;classSamplepublicstaticvoidMain()intsum=0;inti=1;while(i100)break;/如果i大于100,則退出循環(huán)Console.WriteLine(從0到100的和是0,sum);continue語(yǔ)句 n案例名稱:使用案例名稱:使用continue語(yǔ)句語(yǔ)句n程序名稱:程序名稱:2-20.csn nusing System

22、;nclass testn public static void Main() n for(int n=100;n=200;n+) n if(n%3=0) n continue;n Console.WriteLine(從100到200的不能被3整除的數(shù)是0,n);n n n異常處理 nC#的異常可能由兩種方式導(dǎo)致:nthrow語(yǔ)句無(wú)條件拋出異常。nC#語(yǔ)句和表達(dá)式執(zhí)行過程中激發(fā)了某個(gè)異常的條件,使得操作無(wú)法正常結(jié)束,從而引發(fā)異常。例如整數(shù)除法操作分母為零時(shí)將拋出一個(gè)異常。n異常由try語(yǔ)句來(lái)處理,try語(yǔ)句提供了一種機(jī)制來(lái)捕捉執(zhí)行過程中發(fā)生的異常。Try語(yǔ)句有3種基本格式:ntry-catch

23、ntry-finallyntry-catch-finallytry-catch結(jié)構(gòu) 案例名稱:使用案例名稱:使用try-catch語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-21.csusingSystem;classSamplepublicstaticvoidMain(stringargs)longfactorial=1;longnum=Int64.Parse(args0);trychecked/計(jì)算數(shù)num的階乘for(longcur=1;cur=num;cur+)factorial*=cur;catch(OverflowExceptionoe)Console.WriteLine(計(jì)算0的階乘時(shí)引發(fā)溢

24、出異常,num);Console.WriteLine(0,oe.Message);return;Console.WriteLine(0的階乘是1,num,factorial);try-finally結(jié)構(gòu) 案例名稱:使用案例名稱:使用try-finally語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-22.csusingSystem;publicclassSamplepublicstaticvoidMain()tryConsole.WriteLine(執(zhí)行try子句!);gotoleave;/跳轉(zhuǎn)到leave標(biāo)簽finallyConsole.WriteLine(執(zhí)行finally子句!);leave:Cons

25、ole.WriteLine(執(zhí)行l(wèi)eave標(biāo)簽!);try-catch-finally結(jié)構(gòu) 案例名稱:使用案例名稱:使用try-catch-finally語(yǔ)句語(yǔ)句程序名稱:程序名稱:2-23.csusingSystem;classSamplepublicstaticvoidMain()trythrow(newArgumentNullException();/引發(fā)異常catch(ArgumentNullExceptione)Console.WriteLine(Exception:0,e.Message);finallyConsole.WriteLine(執(zhí)行finally子句);C#面向?qū)ο蟪绦?/p>

26、設(shè)計(jì)基礎(chǔ) n與傳統(tǒng)的面向過程的編程方法相比,面向?qū)ο缶幊谭椒ㄓ?個(gè)優(yōu)點(diǎn):n(1)程序的可維護(hù)性好;(2)程序容易修改;(3)對(duì)象可以使用多次,可重用性好。 類的定義 classAclassBvoidf()Aa=newA();繼承 n為了提高軟件模塊的可重用性和可擴(kuò)充性,以便提高軟件的開發(fā)效率,希望能夠利用前人或自己以前的開發(fā)成果,任何面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言都能夠提供兩個(gè)重要的特性:n繼承性(inheritance)n多態(tài)性(polymorphism)。 使用繼承使用繼承案例名稱:使用繼承案例名稱:使用繼承程序名稱:程序名稱:2-24.csusingSystem;classBaseApublic

27、voidFuncA()System.Console.WriteLine(FuncitonA);classDerivedA:BaseApublicvoidFuncB()System.Console.WriteLine(FunctionB);classTesterpublicstaticvoidMain(stringargs)DerivedAaDerived=newDerivedA();aDerived.FuncA();aDerived.FuncB();類的訪問修飾符 案例名稱:類的訪問修飾符案例名稱:類的訪問修飾符程序名稱:程序名稱:2-25.csusingSystem;classClass1p

28、ublicstrings;/公有成員protectedinti;/保護(hù)成員privatedoubled;/私有成員publicvoidF1()s=Welcomesix!;/正確,允許訪問自身成員i=100;/正確,允許訪問自身成員d=18.68;/正確,允許訪問自身成員構(gòu)造函數(shù)和析構(gòu)函數(shù) n構(gòu)造函數(shù)用于執(zhí)行類的實(shí)例的初始化。每個(gè)類都有構(gòu)造函數(shù),即使沒有聲明它,編譯器也會(huì)自動(dòng)提供一個(gè)默認(rèn)的構(gòu)造函數(shù)。在訪問一個(gè)類的時(shí)候,系統(tǒng)將最先執(zhí)行構(gòu)造函數(shù)中的語(yǔ)句。使用構(gòu)造函數(shù)請(qǐng)注意以下幾個(gè)問題:n一個(gè)類的構(gòu)造函數(shù)通常與類名相同n構(gòu)造函數(shù)不聲明返回類型。n構(gòu)造函數(shù)總是public類型的。案例名稱:構(gòu)造函數(shù)和析構(gòu)

29、函數(shù)案例名稱:構(gòu)造函數(shù)和析構(gòu)函數(shù)程序名稱:程序名稱:2-26.csusingSystem;classDesk/構(gòu)造函數(shù)和類名一樣,析構(gòu)函數(shù)前面加publicDesk()Console.WriteLine(ConstructingDesk);weight=6;high=3;width=7;length=10;Console.WriteLine(0,1,2,3,weight,high,width,length);Desk()Console.WriteLine(DestructingDesk);protectedintweight;protectedinthigh;protectedintwidth

30、;protectedintlength;publicstaticvoidMain()Deskaa=newDesk();Console.WriteLine(backinmain();this關(guān)鍵字 案例名稱:使用案例名稱:使用this關(guān)鍵字關(guān)鍵字程序名稱:程序名稱:2-27.csusingSystem;publicclassEmployeepublicstringname;/員工姓名publicdecimalsalary;/員工薪水/構(gòu)造函數(shù)publicEmployee(stringname,decimalsalary)/用this關(guān)鍵字給正在構(gòu)造的對(duì)象的name和salary賦值this.na

31、me=name;this.salary=salary;/顯示員工姓名及薪水publicvoidDiaplayEmployee()Console.WriteLine(姓名:0,name);Console.WriteLine(薪水:0元,salary);/用this方法將當(dāng)前對(duì)象傳給Tax.CalcTax()方法Console.WriteLine(個(gè)人所得稅:0元,Tax.CalcTax(this);publicclassTaxpublicstaticdecimalCalcTax(EmployeeE)return(0.14m*(E.salary-800.0m);publicclassSamplep

32、ublicstaticvoidMain()/聲明類Employee的實(shí)例eEmployeee=newEmployee(小劉,4123.6m);e.DiaplayEmployee();/顯示員工姓名和薪水關(guān)鍵字static 案例名稱:使用案例名稱:使用static關(guān)鍵字關(guān)鍵字程序名稱:程序名稱:2-28.csusingSystem;publicclassPersonprivateintid;publicstaticinttotal=0;publicPerson()total+;id=total;publicclassOtherClasspublicstaticvoidMain()Person.t

33、otal=100;Console.WriteLine(Person.total);Personc=newPerson();Console.WriteLine(Person.total);案例名稱:使用靜態(tài)方法案例名稱:使用靜態(tài)方法程序名稱:程序名稱:2-29.csusingSystem;publicclassPersonprivateintid;privatestaticinttotal=0;publicstaticintgetTotalPerson()returntotal;publicPerson()total+;id=total;publicclassTestPersonpublicst

34、aticvoidMain()Console.WriteLine(Person.getTotalPerson();Personp1=newPerson();Console.WriteLine(Person.getTotalPerson();C#面向?qū)ο蟾呒?jí)特性 n和其他的面向?qū)ο笳Z(yǔ)言一樣,C#支持多態(tài)、虛方法、函數(shù)的重載等。n除此之外,C#還提供一種特殊的數(shù)據(jù)形態(tài)“裝箱” 多態(tài)(Polymorphism) n在C#中,多態(tài)性的定義是:“同一操作作用于不同的類的實(shí)例,不同的類將進(jìn)行不同的解釋,最后產(chǎn)生不同的執(zhí)行結(jié)果”。C#支持兩種類型的多態(tài)性。n編譯時(shí)的多態(tài)性:編譯時(shí)的多態(tài)是通過重載來(lái)實(shí)現(xiàn)的。對(duì)于

35、非虛的成員來(lái)說,系統(tǒng)在編譯時(shí),根據(jù)傳遞的參數(shù)、返回的類型等信息決定實(shí)現(xiàn)何種操作。n運(yùn)行時(shí)的多態(tài)性:運(yùn)行時(shí)的多態(tài)性是直到系統(tǒng)運(yùn)行時(shí),才根據(jù)實(shí)際情況決定實(shí)現(xiàn)何種操作。C#中,運(yùn)行時(shí)的多態(tài)性通過虛方法實(shí)現(xiàn)。n編譯時(shí)的多態(tài)性提供了運(yùn)行速度快的特點(diǎn),而運(yùn)行時(shí)的多態(tài)性則帶來(lái)了高度靈活和抽象的特點(diǎn)。虛方法 案例名稱:使用虛方法案例名稱:使用虛方法程序名稱:程序名稱:2-30.csusingSystem;classTeststaticvoidMain(stringargs)Baseb=newBase();b.Draw();Derivedd=newDerived();d.Draw();d.Fill();Base

36、obj=newDerived();obj.Fill();obj.Draw();classBasepublicvoidFill()System.Console.WriteLine(Base.Fill);publicvirtualvoidDraw()System.Console.WriteLine(Base.Draw);classDerived:BasepublicoverridevoidDraw()System.Console.WriteLine(Derived.Draw);publicnewvoidFill()System.Console.WriteLine(Derived.Fill);抽象類

37、 案例名稱:使用抽象類案例名稱:使用抽象類程序名稱:程序名稱:2-31.csusingSystem;abstractpublicclassWindowpublicWindow(inttop,intleft)this.top=top;this.left=left;abstractpublicvoidDrawWindow();protectedinttop;protectedintleft;publicclassListBox:WindowpublicListBox(inttop,intleft,stringcontents):base(top,left)/調(diào)用基類的構(gòu)造函數(shù)listBoxCont

38、ents=contents;publicoverridevoidDrawWindow()Console.WriteLine(Writingstringtothelistbox:0,listBoxContents);privatestringlistBoxContents;publicclassTesterstaticvoidMain()WindowwinArray=newWindow3;winArray0=newListBox(1,2,FirstListBox);winArray1=newListBox(3,4,SecondListBox);for(inti=0;i2;i+)winArrayi

39、.DrawWindow();函數(shù)重載 案例名稱:重載普通函數(shù)案例名稱:重載普通函數(shù)程序名稱:程序名稱:2-32.csusingSystem;classOverloadpublicvoidFunc()System.Console.WriteLine(Func();publicvoidFunc(intx,inty)System.Console.WriteLine(Func(intx,inty);publicvoidFunc(longx,longy)System.Console.WriteLine(Func(longx,longy);publicstaticvoidMain(stringargs)OverloadmyOverload=newOverload();myOverload.Func();myOverload.Func(1,1);myOverload.Func(1L,1L);/會(huì)調(diào)用哪個(gè)重載函數(shù)呢?myOverload.Func(1L,1);案例名稱:重載構(gòu)造函數(shù)案例名稱:重載構(gòu)造函數(shù)程序名稱:程序名稱:2-33.csusingSystem;classCtorOverloadDemostaticv

溫馨提示

  • 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)論