




已閱讀5頁,還剩406頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
.,1,C#課件,第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章ACCP4.0補充,.,2,.NET平臺以及VisualStudio.NETIDE簡介,第一章,返回,.,3,目標,討論計算、Internet和應用程序開發的轉變了解對.NET的需求解釋CLR和IL的角色VisualStudio.NETIDE簡介,.,4,集中式計算,.,5,客戶端/服務器計算,數據大的話網絡就不好了,.,6,分布式計算2-1,.,7,分布式計算2-2,.,8,計算方案的轉變,.,9,當前的Internet,.,10,目前存在的難題,.,11,Internet的轉變,站點、服務和設備彼此協作,共同提供豐富的用戶體驗。,.,12,應用程序開發的演變,.,13,.NET-演變的結果2-1,.,14,.NET-演變的結果2-2,Internet的轉變,計算的轉變,應用程序開發的轉變,融合計算和通訊,形成組合體,而不是孤島!,分布式計算本地進行,軟件成為服務,應用程序可以由任何人在任何地方使用,.NET,.,15,.,16,.NET-將DC(個人計算)向前推進了一步2-1,.,17,.NET-將DC向前推進了一步2-2,.,18,.NET所支持的語言,.,19,語言特定的編譯器和運行庫,.,20,代碼被執行,IL+元數據,CLR,IL和CLR的使用,.,21,執行.NET程序,.,22,Microsoft中間語言,.,23,公共語言運行庫,.,24,VS.NETIDE幫助系統演示,.,25,VS.NETIDE設計器演示,.,26,VS.NETIDE窗口管理演示,.,27,總結,.NET是以Internet為中心的一種全新的平臺通過.NET,可以將用戶數據存放在網絡上,并且隨時隨地通過與.NET兼容的任何設備訪問這些數據NET獨一無二的特征是可以提供多語言支持以.NET語言編寫的源代碼將被編譯兩次,第一次由語言特定的編譯器從源代碼編譯為IL,第二次從IL編譯為機器碼,.,28,Microsoft.NET平臺組件,第二章,返回,.,29,回顧,.NET是以Internet為中心的一種全新平臺通過.NET,可以將用戶數據存放到網絡上,隨時隨地通過與.NET兼容的任何設備訪問該數據.NET獨一無二的特征是提供多語言支持以.NET語言編寫的源代碼被編譯兩次,一次由語言特定的編譯器從源代碼編譯成IL,第二次從IL編譯成機器碼,.,30,目標,描述Microsoft.NET的核心組件討論.NET框架并列出其組件談論.NET優點,.,31,Microsoft.NET的組件,.,32,Microsoft.Net平臺的功能,Internet協議,XML,Microsoft.NET,構建在XML和Internet協議的基礎之上,用于開發新一代軟件的一套工具和服務集,旨在使對Internet上的任何資源組進行集成/編排成為可能,可以更快更容易地設計、實現和部署協作式Web解決方案,.,33,XML,Internet協議,XML,Microsoft.NET,將實際數據與表現形式分開,構建新一代Internet的關鍵;使得能夠對信息進行整理、編程和編輯,提供了一種將數據發布到多種設備的方法,使站點能夠進行協作并提供能夠彼此交互的Web類型豐富、性能高不用類型轉換、穿透防火墻服務組合體,.,34,SOAP的功能,Internet協議,XML,Microsoft.NET,Microsoft.NET構建在HTTP和SOAP(簡單對象訪問協議)等現有協議上,SOAP是基于XML/HTTP的協議,SOAP允許以獨立于平臺的方式訪問服務、對象和服務器,SOAP用于在分散的分布式環境中交換信息,.,35,Microsoft.NET平臺,.,36,.NET框架,.NETEnterpriseServer,.NET生成塊服務,選擇Windows2000系列,.,37,Microsoft.NET框架的組件,.,38,通過服務器系列可以快速生成和管理一個集成的、支持Web的企業系統可伸縮性設計可以與最新的Internet和數據標準實現互操作,安裝SQLServer2000,InternetSecurityclassTeststaticvoidMain()intarray1=newint5;Console.WriteLine(10*array12);,本示例的輸出結果是0,.,65,默認值,常用數據類型的默認值:,.,66,C#中的輸入/輸出3-1,使用System命名空間中的Console類的方法最常用的方法Console.ReadLine()Console.WriteLine(),.,67,C#中的輸入/輸出3-2,usingSystem;classTestDefaultValuesstaticvoidMain()intnumber,result;number=5;result=100*number;Console.WriteLine(“當100與數字0相乘時,結果為1,number,result);,突出顯示的代碼行起著占位符的作用,即指定變量結果值的顯示位置。,index,alignment:formatString)可選整數,指示包含格式化值的區域的最小寬度。如果格式化值的長度小于對齊,則用空格填充該區域。如果對齊為負,則格式化的值將在該區域中左對齊;如果為正,則格式化的值將右對齊。如果沒有指定對齊,則該區域的長度為格式化值的長度。如果指定對齊,則需用逗號分隔。G常規,E或F中較短的F浮點數,常規表示法E用E表示法表示的浮點數(其中,E代表10的次冪)N帶有分隔符的浮點數(在美國為逗號)C貨幣,帶有貨幣符號和分隔符(在美國為逗號)D十進制數,僅用于整型X十六進制數,僅用于整型,.,68,C#中的輸入/輸出3-3,示例接受了一行的用戶輸入,并將其回顯為輸出,.,69,if結構2-1,用于執行條件分支語法表達式需要始終為Boolean類型的表達式,.,70,If結構2-2,上面的代碼段將顯示錯誤消息錯誤CS0029:無法將類型“string”隱式轉換為類型“bool”,.,71,switch語句2-1,語法-,每個case分支必須有一個break語句,.,72,switch語句2-2,Switch結構可以充當多個if語句,.,73,循環結構,當特定條件為true時執行一組特定的指令,或將特定指令組執行一定次數循環結構的類型-while循環do循環for循環foreach循環,.,74,while循環,while循環執行一組語句,直至指定條件為falsebreak語句-隨時跳出循環continue語句-跳過當前循環,并開始下一循環,.,75,do循環,語法-,在條件檢查之前,循環體中的語句組至少執行一次,.,76,for循環,語法-,intsum=1;for(count=0;count10;count+)sum+;,for語句循環10次,sum的的最終結果是10。,.,77,foreach循環2-1,foreach循環用于通過集合或數組來循環語法-,.,78,foreach循環2-2,usingSystem;publicclassForEachLoopstaticvoidMain(Stringargs)intindex;Stringarray1=newString3;for(index=0;index3;index+)array1index=argsindex;foreach(StringstrNameinarray1)Console.WriteLine(strName);,.,79,C#中的構造函數,C#中的構造函數與類同名,classMyConstructorExpublicMyConstructorEx()/MyConstructorEx構造函數,.,80,C#中的析構函數,C#中的析構函數與類也同名,classMyConstructorExpublicMyConstructorEx()/MyConstructorEx構造函數publicMyConstructorEx()/MyConstructorEx析構函數,.,81,C#的基本類型2-1,C#的數據類型分為兩種基本類型值類型int、char和結構引用類型類、接口、數組和字符串,.,82,C#的基本類型2-2,值類型僅在內存中保存值存儲與堆棧中引用類型將對象的地址存儲與堆中null表示沒有應用任何對象,.,83,值類型,variableVal是值類型輸出結果為100,而不是200,.,84,引用類型,usingSystem;classDataTypeTestpublicintvariableVal;classDataTypeTestRefstaticvoidMain()DataTypeTestdataTest=newDataTypeTest();dataTest.variableVal=100;funcDataTypeTest(dataTest);Console.WriteLine(dataTest.variableVal);staticvoidfuncDataTypeTest(DataTypeTestdataTest)inttempVar=10;dataTest.variableVal=tempVar*20;,.,85,值類型和引用類型,.,86,裝箱和取消裝箱,裝箱是從值類型到引用類型的轉換取消裝箱是從引用類型到值類型的轉換示例,.,87,C#中的數據類型處理,C#提供了一種“統一類型系統”C#中所有數據類型都是從一個類即object類派生而來的,.,88,靜態成員,成員不與任何特定的對象或類關聯僅可以有一個實例,staticintstaticMem;staticintinstanceCount()/instanceCount實現,.,89,數組,一組具有類似數據類型的值屬于引用類型,因此存儲于堆中C#中的數組聲明語法如下DataTypenumberofelementsArrayName;,.,90,結構,結構屬于值類型可以有方法可以擁有構造函數不能實現繼承,structstructExpublicintstructDataMember;publicvoidstructEx()/構造函數實現publicvoidstructMethod1()/structMethod1實現,.,91,枚舉類型2-1,publicclassHolidaypublicenumWeekDaysMonday,Tuesday,Wednesday,Thursday,FridaypublicvoidGetWeekDays(StringEmpName,WeekDaysDayOff)/處理WeekDaysstaticvoidMain()HolidaymyHoliday=newHoliday();myHoliday.GetWeekDays(Richie,Holiday.WeekDays.Wednesday);,程序中聲明了僅接受5個值的枚舉類型WeekDays,.,92,枚舉類型2-2,C#中的枚舉數都有與值相關聯的數字默認情況下,枚舉數的第一個元素被指定為0值,后續的各個枚舉數元素的值依次遞增默認值可以在初始化階段中重寫,.,93,編譯和運行,步驟1-在記事本中輸入代碼步驟2-使用.cs擴展名保存文件步驟3-切換至DOS提示符,再輸入以下命令要運行C#文件,可以鍵入不帶擴展名的文件名,.,94,總結,在C#中,數據類型分為兩種基本類型,即值類型和引用類型。裝箱是指從值類型到引用類型的轉換,而取消裝箱是指從引用類型到值類型的轉換。C#中的結構內部可以定義方法,也可以擁有構造函數。枚舉類型是聲明一組命名常數的獨特類型。,.,95,在C#中實現OOP概念,第四章,返回,.,96,作業點評,變量沒初始化結構的構造函數沒有指定參數Stringstring引用(字符串)String是固定不變的,在進行字符串連接的時候是新建一個字符串,進行連接后,最后賦值,如果對String賦值多次,就會在內存中保存多個這個對象的副本,浪費系統資源Csc靜態其它例子,.,97,回顧,第三章C#基礎C#變量的聲明方式如下:AccessModifierDataTypeVariableName;在C#中,數據類型分為兩種基本類型,即值類型和引用類型。裝箱是指從值類型到引用類型的轉換,而取消裝箱是指從引用類型到值類型的轉換。C#的結構內部可以定義方法,也可以擁有構造函數。,.,98,目標,在C#中使用構造函數在C#中使用析構函數解釋垃圾回收器的工作原理討論方法重載討論操作符重載在C#中使用繼承討論C#中的重寫,.,99,C#中的構造函數3-1,是類中的特殊類型的方法是每次創建對象時要調用的函數通常用于初始化與類同名不返回值,.,100,構造函數3-2,usingSystem;publicclassDaysInYearprivateintdays;publicDaysInYear()days=365;staticvoidMain(Stringargs)DaysInYearnewDaysInYear=newDaysInYear();Console.WriteLine(newDaysInYear.days);,無構造函數輸出的結果是0,有構造函數輸出結果是365,.,101,帶參數的構造函數3-3,publicclassDaysInYearprivateintdays;publicDaysInYear()days=365;publicDaysInYear(intday)days=day;publicDaysInYear(StringdayOne)days=Convert.ToInt32(dayOne);publicvoidsetDay(intnewDays)days=newDays;,傳遞不同個數的參數傳遞個數相同但類型不同的參數,.,102,C#中的析構函數,由C#中的垃圾回收器調用垃圾回收器通過銷毀不再需要或不再被引用的對象來釋放內存語法,DaysInYear()/析構函數實現,不能對結構使用析構函數。只能對類使用析構函數。一個類只能有一個析構函數。無法繼承或重載析構函數。無法調用析構函數。它們是被自動調用的。析構函數既沒有修飾符,也沒有參數。,.,103,垃圾回收器3-1,垃圾回收器的工作原理如果為定義析構函數的對象分配了內存,運行庫將把該對象添加到需要銷毀的對象的列表中。垃圾回收器定期檢查有沒有不再被引用的對象如果找到了其名稱沒有列在銷毀器列表中的對象,就立即清除該對象。完成垃圾回收后,將調用銷毀器線程,該線程調用有標記為“準備銷毀”的對象的銷毀方法(析構函數)。,.,104,垃圾回收器3-2,對象銷毀過程發生后,就將該對象從需要銷毀的對象列表中刪除。因為該對象沒有被引用,也沒有列在銷毀器列表中,所以下次進行垃圾回收時就會將它清除。,.,105,垃圾回收器3-3,有析構函數的對象占用的資源較多,因為即使不再需要它們,它們仍會在內存中駐留較長時間。銷毀過程作為獨立的線程執行,該線程會占用大量資源。,GC.Collect()強制進行垃圾回收。,.,106,方法重載,重載方法有兩種方式指定不同個數的參數指定不同類型的參數,.,107,不同參數個數的方法重載,usingSystem;publicclassAreaprivateintareaVal;publicvoidAreaCal(intradius)areaVal=(22/7)*radius*radius;publicvoidAreaCal(intlength,intbreadth)areaVal=length*breadth;publicvoidAreaCal(intlength,intbreadth,intheight)areaVal=length*breadth*height;,參數的類型相同參數個數不同,.,108,不同參數類型的方法重載,.publicvoidAreaCal(intradius)areaVal=(22/7)*radius*radius;publicvoidAreaCal(stringshapeName)Console.WriteLine(0的面積沒有計算,shapeName);.,方法中參數個數相等,參數類型不同,.,109,操作符重載3-1,重載操作符意味著使該操作符具有不同的行為使用操作符可以使方程式簡單易懂,/第1行intresult=Decimal.Add(54,200);/第2行intresult2=54+200;,上述兩行執行同樣的操作,但操作符更簡便易懂,.,110,操作符重載3-2,以下是可以重載的操作符列表,publicstaticresult-typeoperatorunary-operator(op-typeoperand)publicstaticresult-typeoperatorbinary-operator(op-typeoperand,op-type2operand2),.,111,操作符重載3-3,usingSystem;publicstructDistancepublicDistance(intlon,intmag)this.longitude=lon;this.latitude=mag;intlongitude,latitude;publicstaticDistanceoperator-(Distancefirst,Distancesecond)returnnewDistance(first.longitude-second.longitude,first.latitude-second.latitude);/主函數,publicstaticvoidMain()Distancestart=newDistance();DistancenewDistance=newDistance();Distancefinish=newDistance();start.longitude=12;start.latitude=10;finish.longitude=2;finish.latitude=1;newDistance=start-finish;Console.WriteLine(終點的位置在起點以東0度,以北1度。,newDistance.longitude,newDistance.latitude);,.,112,C#中的繼承2-1,將新類作為另一個類的后代來聲明和使用避免重復編寫代碼提供代碼重用的巨大好處,.,113,C#中的繼承2-2,有兩種繼承類型單一繼承多重繼承,C#只支持單一繼承,不支持多重繼承,.,114,單一繼承,usingSystem;classCharacterValpublicintsetCharVal(charch)charcharVal=ch;Console.WriteLine(輸入的字符是:0,charVal);return(0);classStringVal:CharacterValpublicstringstrVal;publicintsetStrVal(stringstr)strVal=str;Console.WriteLine(輸入的字符串是:0,strVal);return(0);,classInheritancestaticvoidMain()StringValobject1=newStringVal();Object1.setCharVal(j);Object1.setStrVal(enjoy);,類StringVal繼承CharacterVal因此可以直接引用方法setCharVal,.,115,密封類,如果不需要類被繼承則應當密封該類,sealedclassclassOne/類的實現,通過指定sealed關鍵字,可以密封任何類,.,116,方法重寫2-1,重寫基類中現有方法的步驟:在繼承類中聲明同名的新方法在該方法名前附加new關鍵字,.,117,方法重寫2-2,usingSystem;classIntAdditionpublicvoidadd()intfirstNum=1;intsecondNum=2;Console.WriteLine(兩數之和是:0,firstNum+secondNum);classStringAddition:IntAdditionnewpublicvoidadd()stringfirstStr=a;stringsecondStr=b;Console.WriteLine(兩字符串之和是:0,firstStr+secondStr);,classMethodOverridepublicstaticvoidMain()StringAdditionobjStringAddition=newStringAddition();objStringAddition.add();,在StringAddition類中基類中add方法被重載,.,118,總結2-1,帶參數的構造函數是接受參數的構造函數在C#中,析構函數由垃圾回收器調用。在C#中,有兩種方式來重載方法指定不同個數的參數指定不同類型的參數C#允許重載操作符,.,119,總結2-2,重載操作符意味著使操作符(例如,加法操作符+)在應用于結構或類的某些對象時具有不同的行為C#不支持多重繼承要重寫基類的現有方法,需要在繼承類中聲明一個同名的新方法,并在方法名稱前附加new關鍵字,.,120,C#中的高級OOP概念,第五章,返回,.,121,回顧,第四章-實現C中的高級OOP概念帶參數的構造函數是指接受參數的構造函數。在C#中,析構函數由垃圾回收器調用。在C#中允許方法重載在C#中允許操作符重載C#不支持多重繼續要重寫基類的現有方法,需要在繼承類中聲明一個同名的新方法,并在方法名稱前附加new關鍵字,.,122,目標,討論多態性使用虛函數討論抽象基類討論接口的概念使用接口,.,123,C#中的多態性6-1,多態性和虛函數關系非常密切多態性允許在運行時實現派生類的方法需要從基類的對象調用派生類方法時,可以使用虛函數,publicclassShapeObjpublicvirtualvoidarea()System.Console.WriteLine(這是一個虛Area方法);,.,124,C#中的多態性6-2,.,125,C#中的多態性6-3,publicclassCircle:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(這是Circle的Area()方法);publicclassRectangle:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(這是Rectangle的Area()方法);publicclassSquare:ShapeObjpublicoverridevoidarea()System.Console.WriteLine(這是Square的Area()方法);,定義了三個類(Rectangle、Circle和Square)。這些類是從ShapeObj類派生的,并且重寫了ShapeObj類的area()方法。override關鍵字用于重寫基類函數area()。,.,126,C#中的多態性6-4,publicclassPolymorphismExppublicstaticvoidmain()ShapeObjobjArray=newShapeObj4;objArray0=newShapeObj();objArray1=newRectangle();objArray2=newCircle();objArray3=newSquare();foreach(ShapeObjiterateArrayinobjArray)iterateArray.area();,每個派生自ShapeObj的類的area()方法都被調用,.,127,C#中的多態性6-5,classSecondExppublicintfirstMethod()return(secondMethod()*thirdMethod();publicvirtualintsecondMethod()return(10);publicintthirdMethod()return(20);classDerivedClass:SecondExppublicoverrideintsecondMethod()return(30);classTestPublicstaticvoidmain()DerivedClassobjDerived=newDerivedClass();System.Console.WriteLine(objDerived.firstMethod();,在DerivedClass中重寫基類中的虛函數secondMethod(),.,128,C#中的多態性6-6,多態性是智能重寫多態性-在運行時決定調用哪個方法多態性需要虛函數,而虛函數則需要進行方法重寫,.,129,抽象基類2-1,抽象基類是可以被繼承的類不能創建抽象類的對象C#允許在類定義中添加abstract修飾符來創建抽象基類。可以有實現的方法.,.,130,抽象基類2-2,usingSystem;abstractclassBaseClasspublicabstractvoidabstractFunc();publicvoidnonAbstractFunc()Console.WriteLine(這是nonAbractFunc()方法!);classDerivedClass:BaseClasspublicoverridevoidabstractFunc()Console.WriteLine(這是abstractFunc()方法!);classTeststaticvoidmain()DerivedClassobjDerived=newDerivedClass();BaseClassobjBase=objDerived;objBase.abstractFunc();objDerived.nonAbstractFunc();,在派生類DerivedClass中重寫抽象基類的抽象方法abstractFunc(),.,131,接口4-1,接口相當于純抽象基類它只能包含抽象方法,而不能包含任何方法實現實現特定接口的類必須實現該接口列出的成員只能有方法屬性索引的聲明只能是publicinternal方法聲明不能有訪問修飾符.,publicinterfaceIFileintdelFile();voiddisFile();,.,132,接口4-2,publicclassMyFile:IFilepublicintdelFile()System.Console.WriteLine(DelFile實現!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile實現!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();,類MyFile繼承了接口IFile并實現了接口中定義的方法delFile()和disFile(),.,133,接口4-3,定義一個類:,publicclassBaseforInterfacepublicvoidopen()System.Console.WriteLine(這是BaseforInterface的open方法);,.,134,接口4-4,publicclassMyFile:BaseforInterface,IFilepublicintdelFile()System.Console.WriteLine(DelFile實現!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile實現!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();,定義一個繼承類BaseforInterface和接口Ifile的新類MyFile,示例輸出如下圖:,.,135,多接口2-1,C#允許多接口實現定義一個接口,僅包含一個方法,publicinterfaceIFileTwovoidapplySecondInterface();,.,136,多接口2-2,publicclassMyFile:BaseforInterface,IFile,IFileTwopublicintdelFile()System.Console.WriteLine(DelFile實現!);return0;publicvoiddisFile()System.Console.WriteLine(DisFile實現!);publicvoidapplySecondInterface()System.Console.WriteLine(ApplySecondInterface實現!);classTeststaticvoidmain()MyFileobjMyFile=newMyFile();objMyFile.disFile();intretValue=objMyFile.delFile();objMyFile.open();objMyFile.applySecondInterface();,本示例實現多接口繼承,與前面代碼合并后輸出的結果如下:,.,137,顯式接口,當兩個接口中具有同名的方法時,可以使用顯式接口實現,publicinterfaceIFileintdelFile();voiddisFile();publicinterfaceIFileTwovoidapplySecondInterface();voiddisFile();publicclassMyFile:BaseforInterface,IFile,IFileTwo.voidIFile.disFile()System.Console.WriteLine(DisFile的IFile實現);voidIFileTwo.disFile()System.Console.WriteLine(DisFile的IFileTwo實現);.,staticvoidMain(stringargs)MyFileobjM=newMyFile();IFileFobj=objM;/IPict引用Fobj.DisFile();IFileTwoFTobj=objM;/IPictManip引用FTobj.DisFile();,.,138,接口繼承,可以通過將多個接口組合到一起來創建新的接口,interfaceIAllFile:IFile,IFileTwo/如果需要,除了IFile和IFileTwo操作之外,/還可以添加更多操作,.,139,總結2-1,需要從基類的對象調用派生類方法時,可以使用虛函數重寫和多態性之間的區別在于,在多態性中,要調用哪個方法的決定是在運行時做出的。抽象基類是至少包含一個抽象成員(沒有實現的方法)的類。不能創建抽象基類的新實例。沒有實現的方法稱為操作。,.,140,總結2-2,接口是純抽象基類。它只能包含抽象方法,而不能包含任何方法實現。一個類可以實現多個接口;事實上,類能夠從另一個類繼承,也能夠實現接口。,.,141,命名空間,第六章,返回,.,142,回顧,第五章C#中的高級OOP概念當需要從基類的對象中調用派生的類方法時,虛擬函數十分有用。重寫和多態之間的區別是:在多態中,調用哪種方法的決定是在運行時做出的。抽象基類是至少包含一個抽象成員(沒有實現的方法)的類。不能創建抽象基類的新實例。沒有實現的方法稱為“操作”。接口是純抽象基類。它只能包含抽象方法,而不包含方法實現。一個類可以實現多個接口。,.,143,目標,解釋命名空間創建自定義的命名空間討論命名空間命名的類型使用命名空間指令為命名空間創建別名了解.NET基類庫,.,144,命名空間,用于避免命名沖突專用于組織代碼當代碼要在其他某個應用程序中重用時,可以降低復雜性,.,145,聲明命名空間2-1,與類的聲明過程相似語法namespaceNameSpaceName/此處列出該命名空間的全部類!,.,146,聲明命名空間2-2,classSamsungTelevision.classSamsungWalkMan.classSonyTelevision.classSonyWalkMan.,namespaceSamsungclassTelevision.classWalkMspaceSonyclassTelevision.classWalkman.,使用命名空間解決命名沖突更簡潔、更有條理、結構更清晰,.,147,嵌套命名空間,在一個命名空間內聲明另一個命名空間,.namespaceSonynamespaceTelevisionclassT14inches.classT21inches.,.namespaceSony.TelevisionclassT14inches.classT21inches.,第二種命名空間的方法在C#中可用,在C+中是不可用的,.,148,訪問修飾符和命名空間,命名空間是隱式公共的命名空間不能為受保護的、私有的或內部的,.publicnamespaceSony/錯誤.privatenamespaceSamsung/錯誤.,在聲明命名空間時前面不應加任何訪問修飾符,.,149,限定命名,要在類所屬的命名空間內使用該類,只需要指定該類的名稱要在類所屬的命名空間之外使用該類,必須使用該類的完全限定名來引用它Namespace.classname,.,150,非限定命名,namespaceSonyclassTelevision.classWalkMan.TelevisionMyEntertainment=newTelevision();.,在類所屬的命名空間內使用該類時,只需指定類名,這稱為“非限定名稱”,.,151,限定命名-示例,usingSony;usingSamsung;usingSystem;namespaceSonynamespaceTelevisionclassT14inchespublicT14inches()Console.WriteLine(一臺14英寸的電視機);classT21inchespublicT21inches()Console.WriteLine(一臺21英寸的電視機);,namespaceSamsungclassTelevisionSony.Television.T14inchesmyEntertainment=newSony.Television.T14inches();classTeststaticvoidMain()Samsung.TelevisionmyEntertainment=newSamsung.Television();,限定命名是在類名稱前加上點操作符和名稱空間,.,152,using命名空間指令,使用限定命名會使代碼變長且容易混淆使用using命名空間指令可以使長且容易混淆的名稱變得簡短而且有意義,.Sony.Television.T14inchesTelevision=newSony.Television.T14inches();.,usingSony.Television;T14inchesTelevision=newT14inches();T21inchesTelevision2=newT21inches();,.,153,有效和無效的命名空間聲明,.,154,二義性名稱2-1,usingSony;usingSamsung;classTeststaticvoidMain()TelevisionMyEntertainment=newTelevision();,這會導致錯誤,因為Sony,Samsung命名空間都有Television類,程序中不知調用哪個命名空間的類,類名稱存在二義性。,.,155,二義性名稱2-2,usingSony;usingSamsung;classTeststaticvoidMain()Samsung.TelevisionMyEntertainment=newSamsung.Television();,在類名存在二義性的情況下,只能像代碼段中那樣使用限定的命名空間,.,156,using別名指令,using別名指令提供了一種功能,可以從命名空間中只提取一個類,并將其放入作用域中,usingT21inches=Sony.Televisions.T21inches;classTeststaticvoidMain()T21inchesM=newT21inches();,using別名名稱=到命名空間或類的完全限定路徑,.,157,基類庫,是預先編寫的代碼的集合,這些代碼可以很容易地合并到應用程序中,并在應用程序中加以使用基類庫可以被所有.NET支持的語言共享根據其功能,BCL(FCL)中的類被歸類到相應的命名空間中,.,158,最常用的命名空間和類,.,159,命名空間System.Array3-1,提供用于操縱數組的類和方法,usingSystem;classTeststaticvoidMain()intarrayToReverse=1,2,3,4,5,6,7;Console.WriteLine(反轉前數組的內容:n);displayArray(arrayToReverse);Array.Reverse(arrayToReverse);Console.WriteLine(nn反轉后數組的內容:n);displayArray(arrayToReverse);,publicstaticvoiddisplayArray(ArraymyArray)foreach(intarrValueinmyArray)Console.WriteLine(arrValue);,.,160,命名空間System.Array3-2,上示例的輸出結果,.,161,命名空間System.Array3-3,命名空間System.Array其他方法,.,162,命名空間System.Threading3-1,在程序中實現多線程同時運行同一程序或程序不同部分的一個或多個實例,.,163,命名空間System.Threading3-2,示例,usingSystem;usingSystem.Threading;classTeststaticvoidMain()ThreadnewThread=newThread(newThreadStart(ThreadToRun);newThread.Start();ThreadToRun();staticvoidThreadToRun()for(intcount=1;countnum2,具有不同數量的參數的方法重載,.,321,方法重載4-4,intgreatest(intnumbers)inttemp=numbers0;for(inti=1;inumbers.Length;i+)if(tempnumbersi)temp=numbersi;returntemp;doublegreatest(doublenumbers)doubletemp=numbers0;for(inti=1;inumbers.Length;i+)if(temp149)Console.WriteLine(合格);elseConsole.WriteLine(“不合格);,派生類,publicstaticvoidMain(stringargs)UnderGraduateobjUnderGraduate=newUnderGraduate();objUnderGraduate.GetInfo();objUnderGraduate.DispInfo();objUnderGraduate.ChkEgbl();,.,337,用于從派生類中訪問基類成員可以使用base關鍵字調用基類的構造函數,關鍵字base,.,338,調用base構造函數,publicclassStudent:Personprivateuintid;/調用Person構造函數publicStudent(s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以書換綠活動方案
- 以色列日活動方案
- 儀隴縣愛老敬老活動方案
- 任命活動策劃方案
- 會議考察活動方案
- 企業產品下鄉活動方案
- 企業黨支部揭牌活動方案
- 企業寫捐款活動方案
- 企業廠慶系列活動方案
- 企業咨詢公司品牌策劃方案
- 湖北省武漢市2024年七年級上學期期中數學試題【附參考答案】
- 脫硫檢修工個人工作總結
- 山西省2022年中考語文真題試卷(含答案)
- 甘肅省2024年中考生物試卷四套合卷【附答案】
- 骨筋膜室綜合征講課
- 安裝排水管合同模板
- 江蘇省蘇州蘇州工業園區四校聯考2025屆初三下學期二模化學試題試卷含解析
- 《民主決策:作出最佳選擇》教案
- 年產20萬噸乙二醇項目初步設計說明書
- 加油站安全風險分級管控清單
- 降低產后乳房脹痛發生護士品管圈(精制手工圖文)
評論
0/150
提交評論