版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、北京傳智播客教育 北京傳智播客教育 .Net基礎(chǔ)加強(qiáng)講師:趙曉虎 北京傳智播客教育 課前準(zhǔn)備給大家一個建議:有問題多問,同樣的時(shí)間,問的多就學(xué)的多。本課程目的:讓大家都具有最基本的編程水平,保證能正常進(jìn)行后續(xù)的課程?;A(chǔ)不好的同學(xué)抓緊復(fù)習(xí)(一次很好的機(jī)會)基礎(chǔ)好的同學(xué)(復(fù)習(xí),看參考書籍,繼續(xù)提升,有問題可以問)C#圖解教程、C# via CLRCSharp Language Specification.doc【C:Program FilesMicrosoft Visual Studio 10.0VC#Specifications2052CSharp Language Specification
2、.doc】在vs的安裝目錄下。可以一章一章的看,也可以講到哪里看到哪里。編程到底怎么學(xué)?那么多語言該學(xué)哪門?老楊的一個經(jīng)典比喻:選擇一種語言泡妞。多做練習(xí),就像游泳。反復(fù)練習(xí),就像打鐵。反復(fù)捶打,去除雜質(zhì) ,保留精華。書要越看越薄。溫故而知新。做課堂筆記(聽課優(yōu)先,然后做筆記)北京傳智播客教育 課前說明課程內(nèi)容中大部分是所有同學(xué)都需要掌握的,但是對于部分技術(shù)水平比較好的同學(xué)為了讓其就業(yè)會有更高的薪資,所以課程中有一部分內(nèi)容是相對比較難的,對于這部分內(nèi)容ppt上會加*,加*的內(nèi)容不要求所有同學(xué)都掌握。為了保證畢業(yè)后都能找到一份工作,所以建議大家應(yīng)該把必須掌握的知識都掌握了以后再考慮加*的內(nèi)容。北
3、京傳智播客教育 復(fù)習(xí)(參考:基礎(chǔ)知識復(fù)習(xí).doc)交換兩個變量的值。(如果會使用ref,則用方法做,傳遞2個int參數(shù)。) int num1 = 5;int num2=6;通過程序交換讓num1 = 6,num2=5;用方法實(shí)現(xiàn)(注:考慮方法的參數(shù)、返回值是什么?):求兩個數(shù)的最大值(傳遞兩個int類型參數(shù)) 。擴(kuò)展:(求三個數(shù)最大值,params)求1-100之間所有奇數(shù)的和。找胖子,200,120,90,180,110,找最胖的人.(求最大值,參數(shù)是int類型數(shù)組。)不能調(diào)用數(shù)組的Max()方法。c#時(shí)間格式轉(zhuǎn)換漢字大寫 比如: “2011年6月4日” 轉(zhuǎn)換成 “二零一一年六月四日”。(參
4、考提示:把字符串作為char數(shù)組來用,判斷如果是2二,0零,1一)。暫時(shí)不考慮10日、13日、23日等問題。創(chuàng)建一個Person類,屬性:姓名、性別、年齡;方法:SayHi() 。再創(chuàng)建一個Employee類繼承Person類,擴(kuò)展屬性Salary,重寫SayHi方法。新建控制臺應(yīng)用程序來完成以上問題。北京傳智播客教育 再次強(qiáng)調(diào)代碼規(guī)范規(guī)則(法律,必須遵守否則報(bào)錯)語法規(guī)范(道德,大家都喜歡有道德的人。)注釋駱駝命名 :第一個單詞首字母小寫,之后的單詞首字母大寫 userName、userPassword、realName(普通變量(局部變量)、字段)帕斯卡命名:第一個單詞首字母大寫,之后的單
5、詞首字母大寫 GetMax()、ChangeName()(方法名、類名、屬性名)定義的變量或者方法 名字要有意義。方法名:動詞。Write()、Open()、Close()、Dispose()、GetUserId()、(方法都是要做一件事情)變量名:按功能命名、按方法的返回值內(nèi)容命名(userName=GetUserName();)上課記筆記!北京傳智播客教育 復(fù)習(xí)WinForm桌面程序,桌面應(yīng)用程序是相對于Web應(yīng)用程序而言的。 桌面應(yīng)用程序:QQ、迅雷、OfficeWeb應(yīng)用程序:網(wǎng)上銀行系統(tǒng)、163郵箱系統(tǒng)、電子商務(wù)網(wǎng)站、網(wǎng)上預(yù)約掛號平臺WinForm的控件TextBox、Timer、C
6、heckBox、TreeView、GroupBox、Label、Button、RadioButton、CheckBoxList、RadioButtonList、Form、PictureBox、ComboBox、Panel、。WinForm程序是事件驅(qū)動的。案例:制作一個簡易計(jì)算器,默認(rèn)為“請選擇”北京傳智播客教育 .net程序基本編寫、執(zhí)行流程(c#)1編寫c#代碼,保存為.cs文件。2通過csc.exe程序來將.cs文件編譯為.net程序集(.exe或.dll)。此時(shí)的exe或dll并不是機(jī)器碼(cpu不可理解)。【csc /out:c:a.exe c:program.cs】C:Window
7、s Frameworkv4.0.30319csc.exe3程序運(yùn)行時(shí)通過JIT編譯(Just In Time)即時(shí)編譯,將程序集編譯為cpu能理解的機(jī)器碼,這時(shí)cpu才能執(zhí)行。(這個編譯過程會與當(dāng)前機(jī)器有關(guān)(根據(jù)當(dāng)前機(jī)器的內(nèi)存、cpu等)。NGen.exe北京傳智播客教育 面向?qū)ο螅∣O)什么是面向?qū)ο??一種分析問題的方式(增強(qiáng)了程序的可擴(kuò)展性)。面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)。什么是類?什么是對象?類和對象的區(qū)別?如何寫一個汽車類?類是模具,創(chuàng)建對象的模具,抽象的。類是一種數(shù)據(jù)類型,用戶自定義的數(shù)據(jù)類型類組成:字段、屬性、方法、構(gòu)造函數(shù)等對象是具體的,是類的具體實(shí)例。對象具有屬性(特征)
8、和方法(行為)類中包含了數(shù)據(jù)(用字段表示)與行為(用方法(函數(shù)、功能)表示,方法為一塊具有名稱的代碼)案例:創(chuàng)建學(xué)生類,老師類,通過構(gòu)造函數(shù)初始化類內(nèi)部字段this ,當(dāng)前對象案例:使用面向?qū)ο蠓绞街刈鲇?jì)算器v2.0。(寫一個Calculator類,里面有幾個計(jì)算方法。)實(shí)現(xiàn)WinForm版本與控制臺版本。練習(xí):猜拳游戲。先分析類和對象。實(shí)現(xiàn)WinForm版本與控制臺版本。北京傳智播客教育 添加引用與導(dǎo)入命名空間的區(qū)別添加引用(前提)添加程序集導(dǎo)入命名空間namespace (ctrl+ . 或shift + alt + F10)為什么在另一個項(xiàng)目中建的類,添加引用后還是不能使用?(類的訪問修
9、飾符默認(rèn):internal,改成public)“參數(shù)”與“返回值”參數(shù)的個數(shù)、類型與返回值沒有任何半毛錢關(guān)系??刂婆_應(yīng)用程序中不要新建Form再次說明this的使用,通過this訪問類的屬性。this.Fist北京傳智播客教育 變量作用域變量作用域:離聲明該變量最近的那對包含聲明語句的大括號內(nèi)部。成員變量直接屬于某個類,作用域在該類內(nèi)部。成員變量使用前如果不賦值,默認(rèn)會有一個初始值。stringnull;int0;boolfalse局部變量聲明該變量的塊語句或方法結(jié)束的封閉括號之前的作用域內(nèi)(使用之前必須得賦值。)思考:public void M1()int n=10;if(n5)int n=
10、100;/對嗎?北京傳智播客教育 封裝提問:大家覺得什么是封裝?遙控器剛出來時(shí)候很神奇,點(diǎn)個按鈕就能換電視臺、切音量、關(guān)電視。而我們使用遙控器的人不需要知道他是怎么實(shí)現(xiàn)的(你只需要知道每個按鈕的功能即可)和遙控器類似,面向?qū)ο蟮姆庋b就是把事物的狀態(tài)和行為封裝在類中,使用類的人不需要知道類內(nèi)部是怎么實(shí)現(xiàn)的,只要調(diào)用其中的屬性和方法實(shí)現(xiàn)功能就行。就像你使用遙控,不需要知道他是怎么控制電視的,只要知道按鈕能換臺就行類和對象本身就是封裝的體現(xiàn)。1.屬性封裝了字段、2.方法的多個參數(shù)封裝成了一個對象、3.將一堆代碼封裝到了一個方法中、4.將一些功能封裝到了幾個類中、5.將一些具有相同功能的代碼封裝到了一
11、個程序集中(dll、exe),并且對外提供統(tǒng)一的訪問接口。(屬性名、方法名等。)北京傳智播客教育 繼承(是指類與類之間的關(guān)系。)車 (Vehicle) 卡車(Truck)輕型卡車重型卡車 轎車 (Car)-小轎車面包車如何判斷一個繼承關(guān)系是否合理?子類 is a 父類。卡車和轎車都是車,都有輪子、發(fā)動機(jī)。但是卡車又能拉貨,轎車能拉人Base Class基類、Parent Class父類Derived Class派生類、Child Class子類為什么要繼承?繼承帶給我們的好處?代碼重用LSP(Liskov)里氏替換原則(通過代碼說明一下,聲明父類類型變量,指向子類類型對象,以及調(diào)用方法時(shí)的一些
12、問題)、多態(tài)。(程序的可擴(kuò)展性、靈活性)方法重寫override。虛方法的原理:虛方法表。子類繼承父類的屬性和方法,使創(chuàng)建子類變得很簡單,實(shí)現(xiàn)了代碼重用、以及多態(tài)。類的單根繼承性、傳遞性、繼承時(shí)構(gòu)造函數(shù)的問題。構(gòu)造函數(shù)不能被繼承。所有的類都直接或間接的繼承自object。查看IL代碼。北京傳智播客教育 關(guān)于繼承的那些事兒案例:定義學(xué)生類(姓名、性別、年齡、成績,Hello方法)、老師類(姓名、性別、年齡、工資、Hello方法)從中抽象出一個父類,通過構(gòu)造函數(shù)給子類字段賦值protected 只能在子類內(nèi)部和當(dāng)前類內(nèi)部中使用可以在類內(nèi)部以及所有子類中(內(nèi)部)訪問。this:1.作為當(dāng)前類的對象,
13、可以調(diào)用類中的成員。this.成員(調(diào)用成員,自己)2.調(diào)用本類的其他構(gòu)造函數(shù)。:this()(調(diào)用構(gòu)造函數(shù),自己)reflector查看base:1.調(diào)用父類中的成員(在子類重寫父類成員或者子類使用new關(guān)鍵字隱藏了父類成員時(shí),調(diào)用父類成員)base點(diǎn)不出子類獨(dú)有成員。2.調(diào)用父類中的構(gòu)造函數(shù)(調(diào)用構(gòu)造函數(shù),父類)當(dāng)調(diào)用從父類中繼承過來的成員的時(shí)候,如果子類沒有重寫則this.成員;與base.成員;沒有區(qū)別。如果子類重寫了父類成員,則this.成員;調(diào)用的是子類重寫以后的。base.成員;調(diào)用的依然是父類的成員。子類構(gòu)造函數(shù)必須指明調(diào)用父類哪個構(gòu)造函數(shù)北京傳智播客教育 練習(xí)練習(xí):定義父親類
14、Father(姓lastName,財(cái)產(chǎn)property,血型bloodType),兒子Son類(玩游戲PlayGame方法),女兒Daughter類(跳舞Dance方法),調(diào)用父類構(gòu)造函數(shù)(:base()給子類字段賦值練習(xí):定義汽車類Vehicle屬性(brand(品牌),color(顏色)方法run,子類卡車(Truck) 屬性weight載重 方法拉貨,轎車 (Car) 屬性passenger載客數(shù)量 方法載客練習(xí):升級猜拳游戲(加入父類【繼承】)注意:當(dāng)this與base作為調(diào)用構(gòu)造函數(shù)的語法的時(shí)候,參數(shù)的傳遞可能會有的疑惑。:base(參數(shù),參數(shù))類中的成員如果不寫訪問修飾符默認(rèn)是pr
15、ivate.北京傳智播客教育 訪問修飾符作用:指明程序的其他部分如何訪問該成員。共5種:private 當(dāng)前類中可以訪問,類中成員的默認(rèn)訪問修飾符。protected 當(dāng)前類及子類中可以訪問(在繼承中用。)internal 當(dāng)前程序集內(nèi)部可以訪問protected internal當(dāng)前程序集或子類中(不同程序集也可以訪問)。public 任何地方北京傳智播客教育 訪問級別約束訪問級別約束子類的訪問級別不能比父類的高。(會暴露父類的成員)類中屬性或字段的訪問級別不能比所對應(yīng)的類型訪問級別高。方法的訪問級別不能比方法的參數(shù)和返回值的訪問級別高。用于解決“可訪問性不一致”的錯誤。北京傳智播客教育 實(shí)
16、現(xiàn)多態(tài)的手段1-虛方法virtual PersonChineseAmericanKorean,每個國家的人都有一個說出自己國籍的方法。當(dāng)有一個Person的時(shí)候,循環(huán)現(xiàn)實(shí)每個國家的人。虛方法可以給父類中的方法一個實(shí)現(xiàn),比如ToString()方法虛方法必須有實(shí)現(xiàn)部分,哪怕是空實(shí)現(xiàn)。案例:員工類、部門經(jīng)理類(員工有上班打卡的方法。用類來模擬。練習(xí):把Person類中的SayHello改為虛方法讓其默認(rèn)為學(xué)生的,增加老師、司機(jī)類。虛方法和抽象方法的區(qū)別。 見備注北京傳智播客教育 方法重寫注意事項(xiàng)子類重寫父類方法時(shí),必須與父類保持一致的方法簽名與返回值類型。即:方法名、返回值類型、參數(shù)列表都必須保持
17、一致。 訪問修飾符也得一致“方法簽名”:一般是指方法的【名稱】+方法的【參數(shù)列表】,不包含方法返回值類型北京傳智播客教育 靜態(tài)成員-通過類名訪問、實(shí)例成員-通過對象訪問先通過窗體之間共享值,以及工具類,說明為什么要用static。C#中聲明的所有的變量都需要在類型中,不能在類型以外直接聲明全局變量,與c或c+不同。沒有全局變量的概念。靜態(tài)成員是與“類”相關(guān),而非與“實(shí)例”相關(guān)。普通類中的靜態(tài)成員static只能通過類名訪問靜態(tài)方法中只能訪問靜態(tài)成員,或通過對象訪問實(shí)例成員。多個對象共享同一個靜態(tài)成員。靜態(tài)類(一般都用作工具類,里面都是一些工具函數(shù))Math、Console、Convert 等都
18、是靜態(tài)類。靜態(tài)類中只能包括靜態(tài)成員靜態(tài)構(gòu)造函數(shù)不能有參數(shù)、不能有訪問修飾符(默認(rèn)為private)。靜態(tài)構(gòu)造函數(shù)在第一次使用該靜態(tài)類的時(shí)候只執(zhí)行一次。靜態(tài)成員屬于類所有,非靜態(tài)成員屬于類的實(shí)例所有C#靜態(tài)方法屬于類所有,類實(shí)例化前即可使用在實(shí)例方法中可以直接調(diào)用靜態(tài)方法,在靜態(tài)方法中不可以直接調(diào)用實(shí)例方法靜態(tài)方法和靜態(tài)變量創(chuàng)建后始終使用同一塊內(nèi)存(靜態(tài)存儲區(qū)),而使用實(shí)例的方式會創(chuàng)建多個內(nèi)存少使用靜態(tài)類,靜態(tài)類、靜態(tài)成員所分配的內(nèi)存在程序退出時(shí)才會釋放。北京傳智播客教育 什么時(shí)候使用靜態(tài)成員、靜態(tài)類1.在實(shí)例類中使用靜態(tài)成員。賬戶類:(實(shí)例類)class AccountUserName /用戶
19、名Address /地址Total /存款額static Rate /利率,由于該銀行采用浮動利率,每天的利率根據(jù)當(dāng)天的掛牌利率(基準(zhǔn)利率)來計(jì)算,所以“利率”不適合作為每個對象單獨(dú)的一個數(shù)據(jù)。/當(dāng)多個對象共享同一個數(shù)據(jù)的時(shí)候就可以在實(shí)例類中加入靜態(tài)成員。2.使用靜態(tài)類在項(xiàng)目中需要頻繁用到的一些工具類,例如:Math、Console、Convert 等?;蛘吣M“全局變量”的時(shí)候。北京傳智播客教育 多態(tài):為了程序的可擴(kuò)展性。開放封閉原則(對修改封閉,對擴(kuò)展開放。)先看看ToString()方法。普通類的ToString()、Int32多態(tài)就是指不同對象收到相同消息時(shí),會產(chǎn)生不同行為,同一個類在
20、不同的場合下表現(xiàn)出不同的行為特征多態(tài)的作用:把不同的子類對象都當(dāng)作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應(yīng)需求的不斷變化。里氏替換原則父類引用指向子類對象Person p=new Chinese();(隱式類型轉(zhuǎn)換)父類對象不能夠替換子類Chinese c=(Chinese)new Person();()is-a:可以用來驗(yàn)證繼承關(guān)系中是否合理。(can do,驗(yàn)證實(shí)現(xiàn)接口是否合理*)if(obj is 類型A)/obj是父類類型對象,”類型A”是子類類型。關(guān)鍵字as (類型轉(zhuǎn)換)、 is(通常類型轉(zhuǎn)換前需要通過is來判斷一下類型。)北京傳智播客教育 實(shí)
21、現(xiàn)多態(tài)的方式virtual,子類重寫父類中的方法。abstract,子類重寫父類中的方法。接口,實(shí)現(xiàn)接口的類,將接口中的方法實(shí)現(xiàn)。北京傳智播客教育 怎么實(shí)現(xiàn)多態(tài)1-抽象類abstract抽象類不能被實(shí)例化。抽象類中可以有普通成員。抽象類存在的意義:1.抽象類不能被實(shí)例化,只能被其他類繼承2.繼承抽象類的子類必須把抽象類中的所有抽象成員都重寫(實(shí)現(xiàn))(除非子類也是抽象類。)3.抽象類就是為了重寫多態(tài)(代碼重用)。4.抽象類中可以有實(shí)例成員也可以有抽象成員。什么是抽象類(光說不做)不能被實(shí)例化的類(不能new)抽象類的特點(diǎn)見備注案例:學(xué)生類和老師類中抽象出父類(Person),并讓學(xué)生和老師都要具
22、有SayHello和起立Standup兩個方法練習(xí)1:動物Animal 都有吃Eat和叫Bark的方法,狗Dog和貓Cat叫的方法不一樣.父類中沒有默認(rèn)的實(shí)現(xiàn)所喲考慮用抽象方法。練習(xí)2:計(jì)算形狀Shape(圓Circle,矩形Square,正方形Rectangle)的面積、周長北京傳智播客教育 抽象類練習(xí)要實(shí)現(xiàn)U盤、MP3播放器、移動硬盤三種移動存儲設(shè)備,要求計(jì)算機(jī)能同這三種設(shè)備進(jìn)行數(shù)據(jù)交換,并且以后可能會有新的第三方的移動存儲設(shè)備,所以計(jì)算機(jī)必須有擴(kuò)展性,能與目前未知而以后可能會出現(xiàn)的存儲設(shè)備進(jìn)行數(shù)據(jù)交換。各個存儲設(shè)備間讀、寫的實(shí)現(xiàn)方法不同,U盤和移動硬盤只有這兩個方法,MP3Player還
23、有一個PlayMusic方法橡皮鴨子(RubberDuck)、真實(shí)的鴨子(RealDuck)。兩個鴨子都會游泳,而橡皮鴨子和真實(shí)的鴨子都會叫,只是叫聲不一樣,橡皮鴨子“唧唧”叫,真實(shí)地鴨子“嘎嘎”叫北京傳智播客教育 new(*) 隱藏、截?cái)?用的不多,了解)方法的隱藏Swim方法是子類特有 class RubberDuck:Duck /方法的隱藏 /子類特有的方法,只不過方法名和父類重名了 public new void Swim() Console.WriteLine(swim 被改變了); 如果一個方法在子類中被重寫 Duck duck = new RubberDuck() ; duck.
24、Bark() 調(diào)用子類的方法,因?yàn)楸恢貙?。了抽象方法子類必須重寫所以不能用new.使用第三方dll的時(shí)候,原來沒有SayHi方法,自己繼承后加了個SayHi(),后來第三方dll更新,也加了個SayHi(),繼承后的類中現(xiàn)在就得用new了。北京傳智播客教育 面向?qū)ο笥?jì)算器使用面向?qū)ο蟮姆绞綄?shí)現(xiàn)+、-、* 、/的計(jì)算器1、找對象2、抽象出父類,讓子類都有計(jì)算能力3、實(shí)現(xiàn)子類4、產(chǎn)生子類對象的工廠5、調(diào)用哪部分是可能擴(kuò)展的就嘗試將該部分抽象(封裝變化,將變化的地方抽象出來),以便多態(tài)。北京傳智播客教育 設(shè)計(jì)模式(GOF23種設(shè)計(jì)模式)世上本沒路,走的人多了也就成了路設(shè)計(jì)本沒模式,程序?qū)懚嗔艘簿陀辛?/p>
25、模式總結(jié)前人的思想,總結(jié)出的解決某一類問題的通用方法剛才的計(jì)算器就是設(shè)計(jì)模式中簡單工廠設(shè)計(jì)模式 各種設(shè)計(jì)模式的本質(zhì)都是:多態(tài)。充分理解了多態(tài),再看設(shè)計(jì)模式就會覺得輕松很多。北京傳智播客教育 值類型 引用類型值類型均隱式派生自System.ValueType數(shù)值類型、bool、結(jié)構(gòu)、枚舉查看IL,隱式繼承自ValueType引用類型派生自System.Object字符串、數(shù)組、類、接口等查看IL隱式繼承自O(shè)bject引用類型變量的賦值只復(fù)制對對象的引用。值類型變量賦值會拷貝一個副本。北京傳智播客教育 值類型、引用類型作為參數(shù)傳遞值傳遞,剛才討論的參數(shù)傳遞方式都是值傳遞。引用傳遞,ref,傳遞的是
26、變量的地址。值傳遞(普通的參數(shù)傳遞)引用傳遞(ref)(*)值類型、引用類型值傳遞、引用傳遞值傳遞:引用類型、值類型引用傳遞(ref):引用類型、值類型。北京傳智播客教育 怎么實(shí)現(xiàn)多態(tài)2-接口什么是接口?接口就是一種規(guī)范,協(xié)議(*),約定好遵守某種規(guī)范就可以寫通用的代碼。定義了一組具有各種功能的方法。(只是一種能力,沒有具體實(shí)現(xiàn),像抽象方法一樣,“光說不做”)接口存在的意義:多態(tài)。多態(tài)的意義:程序可擴(kuò)展性。最終節(jié)省成本,提高效率。接口解決了類的多繼承的問題接口解決了類繼承以后體積龐大的問題。接口之間可以實(shí)現(xiàn)多繼承先從語法角度看一下接口,與抽象類類似。北京傳智播客教育 案例(繼承了一個類,同時(shí)實(shí)
27、現(xiàn)了其他接口)鳥-麻雀sparrowspru ,鴕鳥ostrichstrit ,企鵝penguinpengwin ,鸚鵡parrotprt 鳥能飛,鴕鳥,企鵝不能。你怎么辦子類繼承抽象類,實(shí)現(xiàn)接口接口中的成員必須不能有實(shí)現(xiàn),接口不能實(shí)例化。接口中的成員不能有訪問修飾符,隱式公開public接口中可以有屬性、方法、索引器等(其實(shí)都是方法),但不能有字段接口中的所有成員必須被子類中全部實(shí)現(xiàn),除非子類是抽象類,把接口中的成員標(biāo)記為抽象的。練習(xí):從學(xué)生,老師,校長類中抽象出人的類,學(xué)生和老師都有收作業(yè)的方法,但是校長不會收作業(yè)北京傳智播客教育 再看一個接口案例回顧:接口是一種規(guī)范。什么是規(guī)范?理解規(guī)范
28、的意義。規(guī)范,就是告訴我們要做什么,具有什么能力。在程序中為什么需要規(guī)范?(多態(tài),可以讓我們編寫通用的代碼,提高程序的可擴(kuò)展性)接口就像“法律”。登記方法(接口作為參數(shù),實(shí)現(xiàn)多態(tài))DengJi(Person person) /人口登記,Person是抽象類DengJi(Car car) /汽車也要登記DengJi(House house) /房子也要登記。 IJiKouDengJi(IJieKou jk);北京傳智播客教育 練習(xí)橡皮rubber鴨子、木wood鴨子、真實(shí)的鴨子realduck。三個鴨子都會游泳,而橡皮鴨子和真實(shí)的鴨子都會叫,只是叫聲不一樣,橡皮鴨子“唧唧”叫,真實(shí)地鴨子“嘎嘎”
29、叫,木鴨子不會叫.把抽象類變成接口。北京傳智播客教育 顯示實(shí)現(xiàn)接口(*)為什么要顯示實(shí)現(xiàn)接口?方法重名后的解決辦法。顯示實(shí)現(xiàn)接口后,只能通過接口來調(diào)用。不能通過類對象本身來調(diào)用(顯示實(shí)現(xiàn)的接口,查看IL是private的,防止通過類來調(diào)用)為什么要有“顯示實(shí)現(xiàn)接口”?可以解決重名方法的問題。什么是“顯示實(shí)現(xiàn)接口”?實(shí)現(xiàn)接口中的方法時(shí)用:接口名.方法名(),并且沒有訪問修飾符,private“顯示實(shí)現(xiàn)接口”后怎么調(diào)用?只能通過接口變量來調(diào)用,因?yàn)轱@示實(shí)現(xiàn)接口默認(rèn)為private。北京傳智播客教育 接口的特點(diǎn)總結(jié)接口是一種規(guī)范。為了多態(tài)。接口不能被實(shí)例化。接口中的成員不能加“訪問修飾符”,接口中的
30、成員訪問修飾符為public,不能修改。(默認(rèn)為public)接口中的成員不能有任何實(shí)現(xiàn)(“光說不做”,只是定義了一組未實(shí)現(xiàn)的成員)。接口中只能有方法、屬性、索引器、事件,不能有“字段”。接口與接口之間可以繼承,并且可以多繼承。實(shí)現(xiàn)接口的子類必須實(shí)現(xiàn)該接口的全部成員。一個類可以同時(shí)繼承一個類并實(shí)現(xiàn)多個接口,如果一個子類同時(shí)繼承了父類A,并實(shí)現(xiàn)了接口IA,那么語法上A必須寫在IA的前面。class MyClass:A,IA,因?yàn)轭愂菃卫^承的。當(dāng)一個抽象類實(shí)現(xiàn)接口的時(shí)候,如果不想把接口中的成員實(shí)現(xiàn),可以把該成員實(shí)現(xiàn)為abstract。(抽象類也能實(shí)現(xiàn)接口,用abstrac標(biāo)記)“顯示實(shí)現(xiàn)接口”,只
31、能通過接口變量來調(diào)用(因?yàn)轱@示實(shí)現(xiàn)接口后成員為private)。北京傳智播客教育 使用接口的建議面向抽象編程,使用抽象(父類、抽象類、接口)不使用具體?!跋蛏限D(zhuǎn)型”在編程時(shí):接口抽象類父類具體類(在定義方法參數(shù)、返回值、聲明變量的時(shí)候能用抽象就不要用具體。)能使用接口就不用抽象類,能使用抽象類就不用類,能用父類就不用子類。避免定義“體積龐大的接口”、“多功能接口”,會造成“接口污染”。只把相關(guān)聯(lián)的一組成員定義到一個接口中(盡量在接口中少定義成員)。單一職責(zé)原則應(yīng)用在了接口上“接口隔離原則”。定義多個職責(zé)單一的接口(小接口)(組合使用)。(印刷術(shù)與活字印刷術(shù))隨著學(xué)習(xí)的深入再繼續(xù)體會接口的作用。
32、北京傳智播客教育 抽象類復(fù)習(xí)、簡單工廠設(shè)計(jì)模式復(fù)習(xí)(*)抽象類:不能被實(shí)例化,需要被繼承。多態(tài)。子類必須重寫父類中的所有的抽象成員,除非:子類也是一個抽象類。抽象成員在父類中不能有任何實(shí)現(xiàn)。抽象類中可以有實(shí)例成員。抽象成員的訪問修飾符不能是private抽象成員只能寫在抽象類中。abstract作業(yè):通過案例筆記本電腦的選擇。筆記本電腦父類NoteBook、不同品牌的筆記本產(chǎn)品。(繼承+簡單工廠)北京傳智播客教育 接口復(fù)習(xí)(*)定義接口的語法(interface)接口中只能包含方法、屬性、索引器、事件。不能包含字段。見備注1(貌似事件像一個字段?其實(shí)是兩個方法。reflector查看源碼)。接
33、口中的成員不能有任何的實(shí)現(xiàn)(真正的“光說不做”。思考這樣做的意義。聯(lián)想抽象類中的抽象方法。)接口中的成員不能寫訪問修飾符。使用接口的語法一個類可以實(shí)現(xiàn)多個接口。實(shí)現(xiàn)接口的類,必須把接口中的所有成員都實(shí)現(xiàn)。子類實(shí)現(xiàn)接口中的成員時(shí),不能修改成員的訪問修飾符、參數(shù)列表、方法名等。(與方法重寫一樣)北京傳智播客教育 面試題1. 如何使用virtual和override?Person per = new Student();per.SayHI()調(diào)用的子類重寫的SayHi方法(語法、應(yīng)用(多態(tài)))2. 如何使用abstract和override?3. “方法重載overload” 、 “方法重寫over
34、ride、 隱藏new是同一個概念嗎?4.抽象類和接口的區(qū)別?見備注1.抽象類適用于同一系列,并且有需要繼承的成員。接口適用于不同系列的類具有相同的動作(行為、動作、方法)。對于不是相同的系列,但具有相同的行為,這個就考慮使用接口。接口解決了類不能多繼承問題。北京傳智播客教育 類型轉(zhuǎn)換CAST隱式類型轉(zhuǎn)換double num=10;/sizeof(double)/sizeof(int)顯示類型轉(zhuǎn)換int n=(int)num;把學(xué)生轉(zhuǎn)換為人是隱式轉(zhuǎn)換,把人轉(zhuǎn)換為學(xué)生則是顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)Student s = new Student(); Person p =s;/隱式類型轉(zhuǎn)換Student
35、 stu = (Student)p;/顯示類型轉(zhuǎn)換 、obj as 類型。只有在內(nèi)存存儲上存在交集的類型之間才能進(jìn)行隱式轉(zhuǎn)換。不能用Cast轉(zhuǎn)換string/int,只能用Convert。Convert.ToInt32/Convert.ToString北京傳智播客教育 補(bǔ)充:Convert將任意類型轉(zhuǎn)換成字符串:ToString()將字符串轉(zhuǎn)換成“數(shù)值類型”(int、float、double):int.Parse(string str); 、int.TryParse(string str,out int n);/很常用,推薦。double.Parse(string str);、double.T
36、ryParse(string str,out double d);Parse()轉(zhuǎn)換失敗報(bào)異常,TryParse()轉(zhuǎn)換失敗不報(bào)異常。再說as與直接類型轉(zhuǎn)換:(*)if(p is Student) Student stu=(Student)p; CLR會進(jìn)行兩次類型檢查if(檢查一次) /再檢查一次 通過GetType(),GetType()不允許重寫。Student stu=p as Student; /推薦,效率高于第一種,如果轉(zhuǎn)換失敗返回null,而不會報(bào)異常。北京傳智播客教育 類型轉(zhuǎn)換ConvertConvert考慮數(shù)據(jù)意義的轉(zhuǎn)換。 Convert是一個加工、改造的過程。若要進(jìn)行其它類
37、型的轉(zhuǎn)換可以使用Convert.ToInt32、Convert.ToString等。Convert可以把object類型轉(zhuǎn)換為其它類型string str= null;int num= 0; num = Convert.ToInt32(str);Console.Write(num +“rn”);num= Int32.Parse(str);Console.Write(num +“rn”);Int32.TryParse(str, out num);Console.Write(num +rn);當(dāng)遇到類型轉(zhuǎn)換的時(shí)候不知道該怎么轉(zhuǎn),可以去Convert中找找。北京傳智播客教育 異常處理1什么是異常?程
38、序運(yùn)行時(shí)發(fā)生的錯誤。(錯誤的出現(xiàn)并不總是程序員人的原因,有時(shí)應(yīng)用程序會因?yàn)樽罱K用戶或運(yùn)行代碼的環(huán)境改變而發(fā)生錯誤。比如:1.連接數(shù)據(jù)庫時(shí)數(shù)據(jù)庫服務(wù)器停電了;2.操作文件時(shí)文件沒了、權(quán)限不足等;3.計(jì)算器用戶輸入的被除數(shù)是0;4.使用對象時(shí)對象為null;等等。).net為我們把“發(fā)現(xiàn)錯誤(try)”的代碼與“處理錯誤(catch)”的代碼分離開來。異常處理的一般代碼模式:try 可能發(fā)生異常的代碼 catch 對異常的處理 finally 無論是否發(fā)生異常、是否捕獲異常都會執(zhí)行的代碼 try塊:可能出問題的代碼。當(dāng)遇到異常時(shí),后續(xù)代碼不執(zhí)行。catch塊:對異常的處理。記錄日志(log4net
39、),繼續(xù)向上拋出等操作。(只有發(fā)生了異常,才會執(zhí)行。)finally塊:代碼清理、資源釋放等。無論是否發(fā)生異常都會執(zhí)行。案例:int x = 5;int y = 0;int z = x / y;程序運(yùn)行運(yùn)行時(shí)出錯,后續(xù)的內(nèi)容無法運(yùn)行程序一旦有一個功能發(fā)生異常,整個程序崩潰其它功能也無法正常運(yùn)行北京傳智播客教育 異常處理2異常處理代碼的其他幾種形式:try 多個catch 一個finallytry(1個或多個catch),多個catch的順序問題??梢詻]有finally。tryfinally(只能有一個),沒有catch也可以。注意點(diǎn):發(fā)生異常后,try塊中,異常代碼后的代碼不會執(zhí)行。final
40、ly塊中的代碼,無論是否發(fā)生異常都會執(zhí)行。finally中不能寫return語句。try中有return語句,finally也會執(zhí)行即便沒有catch(或者沒有找到合適的catch塊),finally中的代碼也會執(zhí)行,但finally之后的代碼則不會。(見備注1.)Exception ex 異常也是對象,封裝了異常發(fā)生時(shí)的一些信息。Exception 類主要屬性:Message、StackTrace、InnerException(*)扔出自己的異常,扔:throw,抓?。篶atch建議:通過邏輯判斷(if-else)減少異常發(fā)生的可能性!盡量避免使用“異常處理”。在多級方法嵌套調(diào)用的時(shí)候,如果
41、發(fā)生了異常,則會終止所有相關(guān)方法的調(diào)用,并且釋放相關(guān)的資源。 代碼觀察觀察1:見備注1。問題:try塊中發(fā)生異常與不發(fā)生異常時(shí)的輸出結(jié)果分別是什么?觀察2:見備注2。問題:try塊中發(fā)生異常與不發(fā)生異常時(shí)的輸出結(jié)果以及方法的返回值是什么?觀察3:見備注3。問題:try塊中發(fā)生異常與不發(fā)生異常時(shí)finally塊中的代碼是否被執(zhí)行了?該方法的返回值又分別是多少?觀察4:見備注4。問題:當(dāng)調(diào)用該方法時(shí),返回的Person對象的Age屬性在try塊中發(fā)生異常與不發(fā)生異常時(shí)輸出結(jié)果分別是多少?北京傳智播客教育 北京傳智播客教育 函數(shù)返回值(函數(shù)參數(shù)前的修飾符)params 可變參數(shù) 無論有幾個參數(shù),必須
42、出現(xiàn)在參數(shù)列表的最后??梢詾榭勺儏?shù)直接傳遞一個對應(yīng)類型的數(shù)組。ref 僅僅是一個地址,引用傳遞,可以把值傳遞強(qiáng)制改為引用傳遞out 讓函數(shù)可以輸出多個值1.在方法中必須為out參數(shù)賦值2.out參數(shù)的變量在傳遞之前不需要賦值,即使賦值了也不能在方法中使用。(賦值沒意義)ref參數(shù)在傳遞之前必須賦值在方法中可以不為ref參數(shù)賦值,可以直接使用。ref應(yīng)用場景內(nèi)部對外部的值進(jìn)行改變,out則是內(nèi)部為外部變量賦值,out一般用在函數(shù)有多個返回值的場所。北京傳智播客教育 ref與out案例案例1:兩個int變量的交換,用方法做。ref ? out案例2:模擬登陸,返回登陸是否成功(bool),如果登
43、陸失敗,提示用戶是用戶名錯誤還是密碼錯誤”admin”,“888888”【兩個返回值,一個bool,一個string】 ref ? outswap(int n,int m)/交換兩個變量cw(n,m)bool login(string uid,string pwd)北京傳智播客教育 方法重載1.方法名稱相同2.方法簽名不同方法名參數(shù)類型、個數(shù)、(順序)參數(shù)的修飾符(ref、out、params)不包含方法返回值。北京傳智播客教育 Equals、=、ReferenceEquals方法比較兩個對象是否為同一個對象?什么是同一個對象?為什么字符串的Equals和別的不一樣? /string的Equa
44、ls方法判斷的是字符串的內(nèi)容是否相同(重寫了Object中的Equals方法。) /而object中的Equals方法是判斷對象的地址是否相同查看String類的=運(yùn)算符,內(nèi)部調(diào)用的也是Equalsobject.Equals();/用這個來比較兩個對象。/補(bǔ)充一個:如何判斷str1與str2是否為同一個對象?Equals已經(jīng)不可靠了。=也不靠譜了。(=運(yùn)算符重載后也是調(diào)用的 EqualsHelper()來判斷的,與Equals(string)方法一樣。)判斷兩個對象是否相同要用:object. object.ReferenceEquals();北京傳智播客教育 常用類庫String學(xué)習(xí).net
45、就是學(xué)習(xí)它的無數(shù)個類庫怎么用,先看兩個簡單的字符串的一些特性:不可變性(ToUpper演示)字符串暫存池(拘留池)(針對字符串常量)內(nèi)部維護(hù)一個哈希表key為字符串,value是地址。每次為一個新變量賦值都會找key中是否有,如果有則直接把value中的地址賦值給新變量演示abc與控制臺輸入的abc與a+b+c與三個變量abc相加是否為同一個對象,以此說明只針對常量。(*)(暫存、拘留、駐留)字符串留用(Intern,針對變量常量,見備注1)。對于動態(tài)字符串本身在哈希表中沒有,通過這種Intern可以添加到該哈希表中,目的為了提高性能。String.Intern(xx), Intern 方法使
46、用暫存池來搜索與 str 值相等的字符串。如果存在這樣的字符串,則返回暫存池中它的引用。如果不存在,則向暫存池添加對 str 的引用,然后返回該引用。 String.IsInterned(xx),此方法在暫存池中查找 str。如果已經(jīng)將 str 放入暫存池中,則返回對此實(shí)例的引用;否則返回 nullNothingnullptrnull 引用北京傳智播客教育 String 字符串,字符串可以看成字符數(shù)組,不可變特性(通過for循環(huán),修改string中的元素,失?。?。屬性Length /獲得字符串中字符的個數(shù)?!盿A我你他”5方法IsNullOrEmpty()靜態(tài)方法,判斷為null或者為” (
47、靜態(tài)方法)ToCharArray() 將string轉(zhuǎn)換為char, new string(char)ToLower()小寫,必須接收返回值。(因?yàn)椋鹤址牟豢勺?;ToUpper() 大寫。Equals() 比較兩個字符串是否相同。 忽略大小寫的比較, paration.IndexOf() 如果沒有找到對應(yīng)的數(shù)據(jù),返回-1./面試題:統(tǒng)計(jì)一個字符串中,”天安門”出現(xiàn)的次數(shù)。LastIndexOf()如果沒有找到對應(yīng)的數(shù)據(jù),返回-1Substring()/2個重載,截取字符串。Split() /分割字符串。Join()靜態(tài)方法Format()靜態(tài)方法Replace()北京傳智播客教育 字符串
48、的處理練習(xí)1課上練習(xí)1:接收用戶輸入的字符串,將其中的字符以與輸入相反的順序輸出。abccba“.課上練習(xí)2:接收用戶輸入的一句英文,將其中的單詞以反序輸出。 “I love you“I evol uoy課上練習(xí)3:”2012年12月21日”從日期字符串中把年月日分別取出來,打印到控制臺。課上練習(xí)4:把csv文件中的聯(lián)系人姓名和電話顯示出來。簡單模擬csv文件,csv文件就是使用,分割數(shù)據(jù)的文本,輸出: 姓名:張三 電話: string lines = File.ReadAllLines(“1.csv”,Encoding.Default);/讀取文件中的所有行,到數(shù)組中。北京傳智播客教育 字符
49、串的處理練習(xí)2練習(xí)5:123-456-7-89-123-2把類似的字符串中重復(fù)符號”-”去掉,既得到123-456-7-89-123-2. split()、StringSplitOptions.RemoveEmptyEntries Join()練習(xí)6:從文件路徑中提取出文件名(包含后綴) 。比如從c:ab.txt中提取出b.txt這個文件名出來。以后還會學(xué)更簡單的方式:“正則表達(dá)式”,項(xiàng)目中我們用微軟提供的:Path.GetFileName();(更簡單。)練習(xí)7:“port=21,type=ftp”,這個字符串表示IP地址為的服務(wù)器的21端口提供的是ftp服務(wù),其中如果“,type=ftp”
50、部分被省略,則默認(rèn)為http服務(wù)。請用程序解析此字符串,然后打印出“IP地址為*的服務(wù)器的*端口提供的服務(wù)為*” line.Contains(“type=”)。port=21練習(xí)8:求員工工資文件中,員工的最高工資、最低工資、平均工資北京傳智播客教育 作業(yè):“北京傳智播客軟件培訓(xùn),傳智播客.net培訓(xùn),傳智播客Java培訓(xùn)。傳智播客官網(wǎng): 。北京傳智播客歡迎您?!?。在以上字符串中請統(tǒng)計(jì)出”傳智播客”出現(xiàn)的次數(shù)。找IndexOf()的重載。北京傳智播客教育 常用類庫StringBuilderStringBuilder高效的字符串操作當(dāng)大量進(jìn)行字符串操作的時(shí)候,比如,很多次的字符串的拼接操作。St
51、ring 對象是不可變的。 每次使用 System. String 類中的一個方法時(shí),都要在內(nèi)存中創(chuàng)建一個新的字符串對象,這就需要為該新對象分配新的空間。 在需要對字符串執(zhí)行重復(fù)修改的情況下,與創(chuàng)建新的 String 對象相關(guān)的系統(tǒng)開銷可能會非常大。 如果要修改字符串而不創(chuàng)建新的對象,則可以使用 System.Text. StringBuilder 類。 例如,當(dāng)在一個循環(huán)中將許多字符串連接在一起時(shí),使用 StringBuilder 類可以提升性能。 StringBuilder != String/將StringBuilder轉(zhuǎn)換為String.用ToString();StringBuilde
52、r僅僅是拼接字符串的工具,大多數(shù)情況下還需要把StringBuilder轉(zhuǎn)換為String.StringBuilder sb = new StringBuilder();sb.Append();/追加字符串sb.ToString();/把StringBuilder轉(zhuǎn)換為字符串。sb.Insert();sb.Replace();案例:使用程序拼html中的tableString大量拼接演示。北京傳智播客教育 垃圾回收(*)CLR的一個核心功能垃圾回收。垃圾回收的目的:提高內(nèi)存利用率。垃圾回收器,只回收托管堆中的內(nèi)存資源,不回收其他資源(數(shù)據(jù)庫連接、文件句柄、網(wǎng)絡(luò)端口等)。什么樣的對象才會被回收?
53、沒有變量引用的對象。沒有變量引用的對象,表示可以被回收了(null),斷了線的風(fēng)箏,再也回不來了。大學(xué)食堂(自己收盤子)、大排檔(不需要程序員自己收盤子)什么時(shí)間回收?不確定,當(dāng)程序需要新內(nèi)存的時(shí)候開始執(zhí)行回收。GC.Collect();/手動調(diào)用垃圾回收器。不建議使用,垃圾回收時(shí)會暫停一下(非常短暫)讓程序自動去GC。垃圾回收器中“代”的概念:共3代:第0代、第1代、第2代。各代的回收頻率:第0代最高,其次第1代,再次第2代。也就是說越老的對象生存幾率越大。.net中垃圾回收機(jī)制: pact(標(biāo)記和壓縮),一開始假設(shè)所有對象都是垃圾。除了內(nèi)存資源外的其他資源怎么辦?或者Dispose().n
54、et中的集合集合命名空間:using System.Collections;(非泛型集合)using System.Collections.Generic;(泛型集合)常用集合“類似數(shù)組”集合:ArrayList、List“鍵值對”集合(“哈希表”集合):Hashtable、Dictionary“堆?!奔希篠tack、Stack(LIFO)“隊(duì)列”集合:Queue、Queue(FIFO)“可排序鍵值對”集合:(插入、檢索沒有“哈希表”集合高效)SortedList、SortedList (占用內(nèi)存更少,可以通過索引訪問)SortedDictionary (占用內(nèi)存更多,沒有索引,但插入、刪除
55、元素的速度比SortedList快)Set 集合:無序、不重復(fù)。HashSet,可以將 HashSet類視為不包含值的 Dictionary集合。與List類似。SortedSet(.net4.0支持,有序無重復(fù)集合)“雙向鏈表”集合:LinkedList,增刪速度快。北京傳智播客教育 北京傳智播客教育 集合類(增、刪、查、改、遍歷)ArrayList、Hashtable、List、Dictionary數(shù)組特點(diǎn):類型統(tǒng)一、長度固定。集合常用操作 添加、遍歷、移除命名空間System.Collections ArrayList 可變長度數(shù)組,使用類似于數(shù)組屬性 Capacity(集合中可以容納元
56、素的個數(shù),翻倍增長); Count(集合中實(shí)際存放的元素的個數(shù)。)方法 Add(10) AddRange(ICollection c) Remove() RemoveAt() Clear() Contains() ToArray() Sort() 排序Reverse();/反轉(zhuǎn)Hashtable 鍵值對的集合,類似于字典,Hashtable在查找元素的時(shí)候,速度很快。 Add(object key,object value);hash“key”hash“key”=“修改”;.ContainsKey(“key”);Remove(“key”);遍歷:hash.Keyshash.Values/Dic
57、tionaryEntry鍵值對集合中的“鍵”,絕對不能重復(fù)。鍵值對集合原理示意圖北京傳智播客教育 北京傳智播客教育 案例:兩個(ArrayList)集合 “a”,“b”,“c”,“d”,“e”和 “d”, “e”, “f”, “g”, “h” ,把這兩個集合去除重復(fù)項(xiàng)合并成一個。案例:隨機(jī)生成10個1-100之間的數(shù)放到ArrayList中,要求這10個數(shù)不能重復(fù),并且都是偶數(shù)(添加10次,可能循環(huán)很多次。)Random random=new Random();random.next(1,101);/隨即生成1-100之間的數(shù)。練習(xí):有一個字符串是用空格分隔的一系列整數(shù),寫一個程序把其中的整數(shù)
58、做如下重新排列打印出來:奇數(shù)顯示在左側(cè)、偶數(shù)顯示在右側(cè)。比如”2 7 8 3 22 9 5 11”顯示成”7 3 9 2 8 22.”。注意事項(xiàng):不要把Random的實(shí)例化放到循環(huán)里面!可以使用兩個集合來降低產(chǎn)生隨機(jī)數(shù)的循環(huán)次數(shù)。 Random在循環(huán)中會降低執(zhí)行效率(每次new的時(shí)候的種子是一樣的,當(dāng)前時(shí)間。)(*)。泛型集合:使用泛型集合ListDictionaryList類似于ArrayList,ArrayList的升級版。各種方法:Sort()、Max()、Min()、Sum()Dictionary類似于Hashtable,Hashtable的升級版。推薦使用泛型集合。T,K,V就像一把
59、鎖,鎖住集合只能存某種特定的類型,這里的T,K,V也可以是其它字母 北京傳智播客教育 北京傳智播客教育 泛型集合案例:把分揀奇偶數(shù)的程序用泛型實(shí)現(xiàn)。List練習(xí)1:將int數(shù)組中的奇數(shù)放到一個新的int數(shù)組中返回。練習(xí)2:從一個整數(shù)的List中取出最大數(shù)(找最大值)。別用max方法。練習(xí):把123轉(zhuǎn)換為:壹貳叁。Dictionary練習(xí):計(jì)算字符串中每種字母出現(xiàn)的次數(shù)(面試題)。 “ e ,to Chinaworld”,不區(qū)分大小寫,打印“W2”“e 2”“o 3” 提示:Dictionary,char的很多靜態(tài)方法。char.IsLetter()案例:簡繁體轉(zhuǎn)換 。Dictionary。課下
60、練習(xí):英漢翻譯。WinForm做。發(fā)英漢詞典txt。課下練習(xí):火星文翻譯器。發(fā)字庫。(作業(yè)。)案例:編寫一個函數(shù)進(jìn)行日期轉(zhuǎn)換,將輸入的中文日期轉(zhuǎn)換為阿拉伯?dāng)?shù)字日期,比如:二零一二年十二月月二十一日要轉(zhuǎn)換為2012-12-21。(處理“十”的問題:1.*月十日;2.*月十三日;3.*月二十三日;4.*月三十日;)4中情況對“十”的不同翻譯。110;21;3不翻譯;40【年部分不可能出現(xiàn)十,都出現(xiàn)在了月與日部分。】測試數(shù)據(jù):二零一二年十二月二十一日(2012年12月21日)、二零零九年七月九日、二零一零年十月二十四日、二零一零年十月二十日北京傳智播客教育 補(bǔ)充(裝箱、拆箱):box、unbox比較
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)風(fēng)險(xiǎn)管理與防范制度
- 交通肇事逃逸處理制度
- 2026甘肅電投常樂發(fā)電有限責(zé)任公司招聘30人參考題庫附答案
- 2026福建省面向中國科學(xué)院大學(xué)選調(diào)生選拔工作考試備考題庫附答案
- 2026貴州遵義市湄潭縣消防救援大隊(duì)政府專職消防隊(duì)員招聘20人參考題庫附答案
- 2026重慶醫(yī)科大學(xué)附屬第一醫(yī)院工作人員招聘參考題庫附答案
- 2026青海省海西州德令哈市司法局招聘1人備考題庫附答案
- 中共玉環(huán)市委宣傳部關(guān)于下屬事業(yè)單位 市互聯(lián)網(wǎng)宣傳指導(dǎo)中心公開選聘1名工作人員的考試備考題庫附答案
- 會昌縣2025年縣直事業(yè)單位公開選調(diào)一般工作人員考試備考題庫附答案
- 德令哈市公安局2025年面向社會公開招聘警務(wù)輔助人員參考題庫附答案
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗(yàn)和例行試驗(yàn)
- FZ/T 73009-2021山羊絨針織品
- JJF 1069-2012 法定計(jì)量檢定機(jī)構(gòu)考核規(guī)范(培訓(xùn)講稿)
- GB∕T 5900.2-2022 機(jī)床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
- 2011-2015廣汽豐田凱美瑞維修手冊wdl
- DFMEA編制作業(yè)指導(dǎo)書新版
- KTronics籃輸送式洗碗碟機(jī)操作手冊
- DB35∕T 1844-2019 高速公路邊坡工程監(jiān)測技術(shù)規(guī)程
- 城市管理綜合執(zhí)法局城管執(zhí)法與執(zhí)法程序PPT模板
- 閥門基礎(chǔ)知識上
- 第二章注射成型工藝與模具結(jié)構(gòu)
評論
0/150
提交評論