北大青鳥accp5.0,6.07.0課件-教學(xué)電子前沿技術(shù)_第1頁(yè)
北大青鳥accp5.0,6.07.0課件-教學(xué)電子前沿技術(shù)_第2頁(yè)
北大青鳥accp5.0,6.07.0課件-教學(xué)電子前沿技術(shù)_第3頁(yè)
北大青鳥accp5.0,6.07.0課件-教學(xué)電子前沿技術(shù)_第4頁(yè)
北大青鳥accp5.0,6.07.0課件-教學(xué)電子前沿技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C#3.0新語(yǔ)法第一章本章任務(wù)編寫第一個(gè)C#3.0程序?yàn)樽址帉憯U(kuò)展方法本章目標(biāo)掌握C#3.0中的類初始化器掌握C#3.0中的集合初始化器掌握C#3.0中的擴(kuò)展方法掌握C#3.0中的推斷類型與匿名類C#3.0概述C#3.0于2008年初隨VS2008一起正式發(fā)布。C#的進(jìn)化C#1.0托管代碼C#2.0泛型,匿名方法C#3.0LINQ,LambdaC#4.0C#3.0概述C#3.0LINQ推斷類型匿名類C#3.0的新特性包括擴(kuò)展方法自動(dòng)屬性集合初始化器對(duì)象初始化器Lambda表達(dá)式對(duì)象初始化器//….Personlincoln=newPerson();lincoln.FirstName="Lincoln";lincoln.LastName="Burrows";lincoln.Age=30;lincoln.SayHi();//….//….Personscofield=newPerson{FirstName="Michael",LastName="Scofield",Age=20};scofield.SayHi();//….傳統(tǒng)賦值方式使用對(duì)象初始化器賦值演示示例1:對(duì)象初始化器可嵌套的對(duì)象初始化器//可嵌套的對(duì)象初始化器Persontbag=newPerson{FirstName="Theodore",LastName="Bagwell",Age=32,Address=newAddress{Street="PrisonSONA",Country="Panama"}};對(duì)象初始化器不僅可以包含簡(jiǎn)單的賦值代碼,還可以包含其他的對(duì)象初始化器,即嵌套的對(duì)象初始化器對(duì)象初始化器小結(jié)請(qǐng)指出以下代碼中的錯(cuò)誤:Personscofield=newPerson(FirstName="Michael";LastName="Scofield";Age=22;Address=newAddress

(Street="PrisonSONA";Country="Panama";

));對(duì)象初始化器中()應(yīng)該改為{};應(yīng)該改為,代碼錯(cuò)誤代碼錯(cuò)誤集合初始化器List<string>foxRiver8=

newList<string>();foxRiver8.Add("Michael");foxRiver8.Add("Lincoln");foxRiver8.Add("Sucre");foxRiver8.Add("Abruzzi");foxRiver8.Add("T-Bag");foxRiver8.Add("C-Note");foxRiver8.Add("Tweener");foxRiver8.Add("Charles");List<string>foxRiver8=

newList<string>{"Michael","Lincoln","Sucre","Abruzzi","T-Bag","C-Note","Tweener","Charles"};傳統(tǒng)賦值方式使用集合初始化器賦值集合初始化器使我們可以象初始化數(shù)組那樣初始化集合演示示例2:集合初始化器問題小艾同學(xué)從網(wǎng)上下載了一個(gè)圖形類庫(kù)(只有DLL,沒有源代碼),感覺非常好用。但是,其中的Rectangle類只有一個(gè)計(jì)算面積的方法?,F(xiàn)在小艾想為它添加一個(gè)計(jì)算周長(zhǎng)的方法,大家?guī)兔ο胂肟?,有什么好辦法呢?簡(jiǎn)單的擴(kuò)展方法stringgreeting="etobeijing";greeting.SayHi();先看一個(gè)簡(jiǎn)單的例子字符串類型什么時(shí)候多了一個(gè)SayHi()方法?演示示例3:簡(jiǎn)單的擴(kuò)展方法代碼分析//using…..namespaceHelloOrcas{staticclassJBUtility{publicstaticvoidSayHi(thisstrings){stringmessage=string.Format(

"Hi,我是一個(gè)字符串,我的值是:\"{0}\"。",s);MessageBox.Show(message,"JBUtility",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);}}}定義擴(kuò)展方法擴(kuò)展方法必須在靜態(tài)類中定義第一個(gè)參數(shù)前加關(guān)鍵字this這里的string表示將要為所有的string類型添加擴(kuò)展方法擴(kuò)展方法是一種特殊的靜態(tài)方法定義擴(kuò)展方法的語(yǔ)法不帶參數(shù)的擴(kuò)展方法:static方法名(this目標(biāo)類型參數(shù)名)帶參數(shù)的擴(kuò)展方法:static方法名(this目標(biāo)類型參數(shù)名,參數(shù)類型1,參數(shù)名1,…….)擴(kuò)展方法的使用使用擴(kuò)展方法時(shí),請(qǐng)注意:在一個(gè)靜態(tài)類中定義需要的擴(kuò)展方法如果上面定義的擴(kuò)展方法位于不同的命名空間,使用時(shí)記住用using語(yǔ)句引用過來(lái)當(dāng)類本身的方法與擴(kuò)展方法同名時(shí),優(yōu)先類本身的方法帶參數(shù)的擴(kuò)展方法示例publicstaticvoidSayHi(thisstrings,stringcaption){stringmessage=string.Format("Hi,我是一個(gè)字符串,我的值是:\"{0}\"。",s);MessageBox.Show(message,caption,MessageBoxButtons.OKCancel,MessageBoxIcon.Information);}定義帶參數(shù)的擴(kuò)展方法stringgreeting="etobeijing";greeting.SayHi("Beijing2008");調(diào)用帶參數(shù)的擴(kuò)展方法演示示例4:帶參數(shù)的擴(kuò)展方法現(xiàn)場(chǎng)編程請(qǐng)編寫string類的擴(kuò)展方法將字符串轉(zhuǎn)換為Pascal大小寫格式,要求運(yùn)行如下代碼:stringgreeting="etobeijing";Console.WriteLine(greeting.ToPascal());輸出eToBeijing//參考答案publicstaticstringToPascal(thisstrings){string[]words=s.Split(newchar[]{''});stringresult=string.Empty;foreach(stringwordinwords){result+=word.Substring(0,1).ToUpper()+word.Substring(1).ToLower();}returnresult;}練習(xí)—擴(kuò)展方法1訓(xùn)練要點(diǎn)擴(kuò)展方法需求說明為字符串類型編寫ToPascal擴(kuò)展方法將空格分隔的字符串轉(zhuǎn)化成Pascal命名方式講解需求說明stringgreeting="eTOBEIJING";Console.WriteLine(greeting.ToPascal());輸出eToBeijing練習(xí)—擴(kuò)展方法1實(shí)現(xiàn)思路及關(guān)鍵代碼:講解實(shí)現(xiàn)思路和關(guān)鍵代碼

完成時(shí)間:25分鐘publicstaticstringToPascal(thisstrings){string[]words=s.Split(newchar[]{''});stringresult=string.Empty;foreach(stringwordinwords){result+=word.Substring(0,1).ToUpper()+word.Substring(1).ToLower();}returnresult;}練習(xí)—擴(kuò)展方法2需求說明為字符串類型編寫ToCamel擴(kuò)展方法將空格分隔的字符串轉(zhuǎn)化成Camel命名方式完成時(shí)間:15分鐘stringgreeting="eTOBEIJING";Console.WriteLine(greeting.ToCamel());輸出eToBeijing擴(kuò)展方法小結(jié)使用擴(kuò)展方法時(shí),需要注意以下幾點(diǎn):擴(kuò)展方法允許我們對(duì)已存在類型的行為進(jìn)行擴(kuò)展擴(kuò)展方法是一種特殊的靜態(tài)方法擴(kuò)展方法必須在靜態(tài)類中定義擴(kuò)展方法的優(yōu)先級(jí)低于同名的類方法擴(kuò)展方法只在特定的命名空間內(nèi)有效除非必須不要濫用擴(kuò)展方法var關(guān)鍵字var是C#3.0引入的一個(gè)新關(guān)鍵字,它可以根據(jù)初始值自動(dòng)推斷局部變量類型。vari=2008;vars="ACCP";vard=5.0;varnumbers=newint[]{1,2,3};varstudents=newDictionary<int,Person>();inti=2008;strings="ACCP";doubled=5.0;int[]numbers=newint[]{1,2,3};Dictionary<int,Person>students= newDictionary<int,Person>();使用var語(yǔ)法傳統(tǒng)方式兩者效果完全一樣var本質(zhì)我們注意到,在反匯編后,兩者的代碼完全一樣。WithVar方法WithoutVar方法和自動(dòng)屬性類似,編譯器幫助我們完成了幕后工作。var與object的區(qū)別varname="Beijing";name=2008;使用var使用object編譯錯(cuò)誤!Cannotimplicitlyconverttype'int'to'string'objectname="Beijing";name=2008;可以通過編譯演示示例5:var與object的區(qū)別練習(xí):推斷類型訓(xùn)練要點(diǎn):理解推斷類型的本質(zhì)掌握

var關(guān)鍵字的用法需求說明:編寫兩個(gè)方法:一個(gè)方法使用

var定義一組變量一個(gè)方法使用傳統(tǒng)方式定義一組變量使用ILDasm

工具反編譯兩個(gè)方法,比較生成的IL

代碼異同講解需求說明練習(xí):推斷類型實(shí)現(xiàn)思路及關(guān)鍵代碼:

講解實(shí)現(xiàn)思路和關(guān)鍵代碼

完成時(shí)間:15

分鐘strings="ACCP";inti=5;doublef=5.0;Console.WriteLine("{0}{1}{2}",s,i,f);vars="ACCP";vari=5;varf=5.0;Console.WriteLine("{0}{1}{2}",s,i,f);WithoutVar方法

WithVar方法

匿名類匿名類雖然是匿名類型,但是因?yàn)檫€是強(qiáng)類型,所以仍能很好地支持智能感應(yīng)演示示例6:匿名類匿名類的本質(zhì)編譯器自動(dòng)生成的匿名類名稱var小結(jié)請(qǐng)判斷以下代碼的對(duì)錯(cuò):varx;錯(cuò)誤,必須初始化vary={1,2,3};Inti;varv=i++;va

溫馨提示

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