VC#第3講其它常用數(shù)據(jù)類型.ppt
《VC#第3講其它常用數(shù)據(jù)類型.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VC#第3講其它常用數(shù)據(jù)類型.ppt(35頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
VisualC#.NET程序設(shè)計(jì),第三講其它常用數(shù)據(jù)類型,第6章其它常用數(shù)據(jù)類型,本章要點(diǎn):字符串類型的定義與使用枚舉類型的定義與使用委托類型的定義與使用,6.1循序漸進(jìn)學(xué)理論,6.1.1字符串類型1字符串的種類及其定義(1)規(guī)則字符串格式:string字符串變量名=字符串初值;(2)逐字字符串逐字字符串由字符后跟雙引號(hào)括起來的零個(gè)或多個(gè)字符組成。格式:string字符串變量名=字符串初值;,規(guī)則字符串中可以使用的轉(zhuǎn)義字符,【例6-1】觀察下列程序的執(zhí)行結(jié)果。程序代碼usingSystem;classA_6_1publicstaticvoidMain()stringstr1=你是王三?;/“”是轉(zhuǎn)義字符stringstr2=星期一星期二星期三;/“”是轉(zhuǎn)義字符,stringstr3=你好!t王三。;/“t”是轉(zhuǎn)義字符stringstr4=你好t王三?;/t并不看成轉(zhuǎn)義字符,而是看成兩個(gè)字符stringstr5=星期一星期二星期三;/也不是轉(zhuǎn)義字符,而是看成兩個(gè)“”Console.WriteLine(str1=0,str2=1,str3=2,str1,str2,str3);Console.WriteLine(str3=0,str4=1,str4,str5);,執(zhí)行結(jié)果,2字符串類型的使用,【例6-3】編寫一個(gè)Windows應(yīng)用程序,程序的設(shè)計(jì)界面如圖6-1所示,程序的運(yùn)行界面如圖6-2所示。程序執(zhí)行時(shí)在第一個(gè)文本框中輸入一個(gè)字符串,然后按【倒置】按鈕將把輸入的字符串反序顯示在第二個(gè)文本框中。,圖6-1程序設(shè)計(jì)界面,圖6-2程序運(yùn)行界面,3字符串中單個(gè)字符的訪問,例如,有以下語句:stringstr1=Iamateacher./定義一個(gè)字符串并賦初值charc;/定義一個(gè)字符變量c=str10;/給字符變量賦一個(gè)字符,該字符為str1字符串的第一個(gè)字符語句執(zhí)行后,字符變量c的值為I。,【例6-4】編寫一個(gè)程序,用來統(tǒng)計(jì)用戶輸入的字符串中字母?jìng)€(gè)數(shù)、數(shù)字個(gè)數(shù)和其它字符個(gè)數(shù)。程序的設(shè)計(jì)界面如圖6-3所示,程序的運(yùn)行界面如圖6-4所示。,圖6-3程序設(shè)計(jì)界面,圖6-4程序運(yùn)行界面,6.1.2結(jié)構(gòu)類型,在C+和C#中,結(jié)構(gòu)類型是對(duì)同一類具有某些特定屬性和功能的對(duì)象的抽象定義,其定義中可以包括構(gòu)造函數(shù)、析構(gòu)函數(shù)、成員變量、成員函數(shù)、成員屬性等等,同C#中的類類型基本相同。但結(jié)構(gòu)類型與類類型畢竟是兩種不同的類型,主要不同點(diǎn)體現(xiàn)在以下兩個(gè)方面。(1)存儲(chǔ)值的不同結(jié)構(gòu)類型是值類型,而類類型是引用類型。,(2)參數(shù)傳遞不同,格式:struct結(jié)構(gòu)型名成員聲明;例如:structstudentpublicstringname;publicintage;,實(shí)際上程序中使用的不是結(jié)構(gòu)型,而是根據(jù)結(jié)構(gòu)型聲明的結(jié)構(gòu)型變量,根據(jù)結(jié)構(gòu)型聲明結(jié)構(gòu)型變量的格式如下。格式:結(jié)構(gòu)型名結(jié)構(gòu)型變量名;例如有以下語句:studentstu;就是創(chuàng)建了一個(gè)名為stu的結(jié)構(gòu)型變量。在程序中經(jīng)常需要訪問結(jié)構(gòu)型變量的成員,訪問方法如下。結(jié)構(gòu)型變量名.成員名;如要給stu的age成員賦值15,可使用如下語句:stu.age=15;,【例6-5】編程實(shí)現(xiàn)從鍵盤上輸入一個(gè)學(xué)生的學(xué)號(hào)、姓名和年齡,然后輸出剛剛輸入的學(xué)生學(xué)號(hào)、姓名和年齡。,6.1.3枚舉類型,格式:枚舉修飾符enum枚舉類型名枚舉常量1,枚舉常量2,枚舉常量n;定義枚舉變量的語句格式如下:枚舉類型名變量名;如果希望讓枚舉型常量的值是其它類型的,可在定義枚舉型時(shí)指定,定義格式與如下。格式:枚舉修飾符enum枚舉類型名:類型說明符枚舉常量1,枚舉常量2,枚舉常量n;,【例6-6】定義一個(gè)職稱枚舉類型,輸出枚舉類型中所有枚舉常量的值。,6.1.4委托類型,1委托C#的委托相當(dāng)于在C/C+中的函數(shù)指針。函數(shù)指針用指針獲取一個(gè)函數(shù)的入口地址,實(shí)現(xiàn)對(duì)函數(shù)的操作。委托與C/C+中的函數(shù)指針不同在于委托是面向?qū)ο蟮模且妙愋?,因此?duì)委托的使用要先定義后實(shí)例化,最后才調(diào)用。定義委托使用關(guān)鍵字delegate,定義一個(gè)委托:delegateintSomeDelegate(intnID,stringsName);再實(shí)例化:SomeDelegated1=newSomeDelegate(wr.InstanceMethod);最后調(diào)用:d1(5,aaa);通過委托SomeDelegate實(shí)現(xiàn)對(duì)方法InstanceMethod的調(diào)用,調(diào)用還必須有一個(gè)前提條件是:方法InstanceMethod有參數(shù)和定義SomeDelegate的參數(shù)一致,并且返回值為int。方法InstanceMethod定義:publicintInstanceMethod(intnID,stringsName)委托的實(shí)例化中的參數(shù)既可以是非靜態(tài)方法,也可以是靜態(tài)方法。,一個(gè)委托聲明定義了一個(gè)從類System.Delegate延伸的類。一個(gè)委托實(shí)例封裝一個(gè)方法及可調(diào)用的實(shí)體。在聲明委托時(shí)只需要指定委托指向的函數(shù)原型的類型,它不能有返回值也不能帶有輸出類型的參數(shù)。委托類型的定義格式如下。格式:delegate數(shù)據(jù)類型說明符委托類型名();例如,若要聲明一個(gè)指向double類型函數(shù)原型的委托類型,可使用如下語句:delegatedoubleMyDelegate();委托既可以封裝一個(gè)靜態(tài)方法也可以封裝一個(gè)非靜態(tài)的方法。,委托的使用方法,一般分為三步:(1)聲明委托,定義參數(shù)列表和返回類型。(2)實(shí)例化委托:定義一個(gè)委托類型的實(shí)例變量,讓該實(shí)例變量指向某一個(gè)具體的方法。其一般格式如下。格式:委托類型名委托變量名=new委托類型名(方法名);(3)調(diào)用委托:調(diào)用委托類型變量指向的方法。其一般格式如下。格式:委托變量名(實(shí)參列表);,【例4.25】委托示例。usingSystem;classSimpleClasspublicclassWorkerClass/委托引用的非靜態(tài)方法publicintInstanceMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(調(diào)用InstanceMethod方法);returnretval;/委托引用的靜態(tài)方法staticpublicintStaticMethod(intnID,stringsName),intretval=0;retval=nID*sName.Length;Console.WriteLine(調(diào)用StaticMethod方法);returnretval;/定義委托,參數(shù)與上面兩個(gè)方法相同publicdelegateintSomeDelegate(intnID,stringsName);staticvoidMain(stringargs)/調(diào)用實(shí)例方法(非靜態(tài)方法)WorkerClasswr=newWorkerClass();SomeDelegated1=newSomeDelegate(wr.InstanceMethod);Console.WriteLine(InvokingdelegateInstanceMethod,return=0,d1(5,aaa);,/調(diào)用靜態(tài)方法SomeDelegated2=newSomeDelegate(WorkerClass.StaticMethod);Console.WriteLine(InvokingdelegateStaticMethod,return=0,d2(5,aaa);運(yùn)行結(jié)果如圖4.10所示。,圖4.10運(yùn)行結(jié)果,委托,2.多播相對(duì)于上面的一次委托只調(diào)用一個(gè)方法,一次委托也可以調(diào)用多個(gè)方法,稱為多播。通過+和-運(yùn)算符實(shí)現(xiàn)多播的增加或減少。,【例4.26】多播示例。usingSystem;classSimpleClasspublicclassWorkerClass/委托引用的非靜態(tài)方法publicintInstanceMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(調(diào)用InstanceMethod方法);returnretval;,/委托引用的靜態(tài)方法staticpublicintStaticMethod(intnID,stringsName)intretval=0;retval=nID*sName.Length;Console.WriteLine(調(diào)用StaticMethod方法);returnretval;/定義委托,簽名與上面兩個(gè)方法相同publicdelegateintSomeDelegate(intnID,stringsName);staticvoidMain(stringargs)/調(diào)用實(shí)例方法WorkerClasswr=newWorkerClass();SomeDelegated1=newSomeDelegate(wr.InstanceMethod);Console.WriteLine(InvokingdelegateInstanceMethod,return=0,d1(5,aaa);,/調(diào)用靜態(tài)方法SomeDelegated2=newSomeDelegate(WorkerClass.StaticMethod);Console.WriteLine(InvokingdelegateStaticMethod,return=0,d2(5,aaa);/多播Console.WriteLine();Console.WriteLine(測(cè)試多播.);/多播d3由兩個(gè)委托d1和d2組成SomeDelegated3=d1+d2;Console.WriteLine(Invokingdelegate(s)d1ANDd2(multi-cast),return=0,d3(5,aaa);/委托中的方法個(gè)數(shù)intnum_method=d3.GetInvocationList().Length;Console.WriteLine(Numberofmethodsreferencedbydelegated3:0,num_method);/多播d3減去委托d2d3=d3-d2;Console.WriteLine(Invokingdelegate(s)d1(multi-cast),return=0,d3(5,aaa);,/委托中的方法個(gè)數(shù)num_method=d3.GetInvocationList().Length;Console.WriteLine(Numberofmethodsreferencedbydelegated3:0,num_method);運(yùn)行結(jié)果如圖4.11所示。,圖4.11運(yùn)行結(jié)果,6.2典型實(shí)例練能力,6.2.1典型實(shí)例一:回文字符串的判定【實(shí)例題目】編寫一個(gè)應(yīng)用程序,用來判斷用戶輸入的字符串是否為回文,所謂回文就是正讀和反讀均一樣的字符串。如“abcddcba”、“我是兵兵是我”均是回文,而“abcdefgh”則不是回文。程序的設(shè)計(jì)界面如圖6-5所示,程序的運(yùn)行界面如圖6-6所示。,圖6-5程序設(shè)計(jì)界面,圖6-6程序運(yùn)行界面,6.3上機(jī)練習(xí)重應(yīng)用,6.3.1上機(jī)練習(xí)一:從字符串中分離出數(shù)字字符【練習(xí)題目】編寫一個(gè)程序,把在一個(gè)文本框中輸入的字符串中的數(shù)字字符分離出來,然后顯示在另一個(gè)文本框中。程序的設(shè)計(jì)界面如圖6-8所示,程序的運(yùn)行界面如圖6-9所示。,圖6-8程序設(shè)計(jì)界面,圖6-9程序運(yùn)行界面,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VC 其它 常用 數(shù)據(jù)類型
鏈接地址:http://appdesigncorp.com/p-11498198.html