




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C#編程基礎(chǔ)本課件旨在全面介紹C#編程的基礎(chǔ)知識(shí),從C#語(yǔ)言的概述、應(yīng)用領(lǐng)域,到.NET框架的深入剖析,再到VisualStudio開(kāi)發(fā)環(huán)境的搭建與使用,逐步引導(dǎo)學(xué)習(xí)者掌握C#編程的核心技能。我們將深入探討C#的基本語(yǔ)法、數(shù)據(jù)類(lèi)型、運(yùn)算符、控制流,以及面向?qū)ο缶幊痰闹匾拍?,如?lèi)與對(duì)象、繼承、多態(tài)、接口等。此外,還將涉及委托與事件等高級(jí)主題,為學(xué)習(xí)者構(gòu)建堅(jiān)實(shí)的C#編程基礎(chǔ),為后續(xù)的C#應(yīng)用開(kāi)發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。課程介紹:C#概述C#語(yǔ)言簡(jiǎn)介C#(CSharp)是一種由微軟公司開(kāi)發(fā)的面向?qū)ο蟮?、現(xiàn)代的編程語(yǔ)言,是.NET框架的主要編程語(yǔ)言。C#繼承了C和C++的強(qiáng)大功能,同時(shí)簡(jiǎn)化了語(yǔ)法,使其更易于學(xué)習(xí)和使用。C#的設(shè)計(jì)目標(biāo)是提供一種安全、可靠、高效的編程語(yǔ)言,適用于開(kāi)發(fā)各種應(yīng)用程序。C#的特點(diǎn)面向?qū)ο螅褐С址庋b、繼承、多態(tài)等面向?qū)ο筇匦?。?lèi)型安全:提供嚴(yán)格的類(lèi)型檢查,減少運(yùn)行時(shí)錯(cuò)誤。自動(dòng)內(nèi)存管理:通過(guò)垃圾回收器自動(dòng)管理內(nèi)存,避免內(nèi)存泄漏??缙脚_(tái):可在.NETCore等平臺(tái)上運(yùn)行,實(shí)現(xiàn)跨平臺(tái)開(kāi)發(fā)。C#的應(yīng)用領(lǐng)域桌面應(yīng)用C#可用于開(kāi)發(fā)各種Windows桌面應(yīng)用程序,如企業(yè)管理系統(tǒng)、工具軟件等。通過(guò)WindowsForms或WPF框架,可以創(chuàng)建用戶(hù)界面友好、功能強(qiáng)大的桌面應(yīng)用。Web應(yīng)用C#是ASP.NET平臺(tái)的主要編程語(yǔ)言,可用于開(kāi)發(fā)各種Web應(yīng)用程序,如電子商務(wù)網(wǎng)站、社交網(wǎng)絡(luò)平臺(tái)等。ASP.NET提供了豐富的Web開(kāi)發(fā)組件和工具,簡(jiǎn)化了Web應(yīng)用的開(kāi)發(fā)過(guò)程。移動(dòng)應(yīng)用C#可用于開(kāi)發(fā)跨平臺(tái)移動(dòng)應(yīng)用程序,通過(guò)Xamarin框架,可以開(kāi)發(fā)iOS、Android和WindowsPhone應(yīng)用。Xamarin允許開(kāi)發(fā)者使用C#編寫(xiě)一次代碼,然后在多個(gè)平臺(tái)上運(yùn)行。游戲開(kāi)發(fā)C#是Unity游戲引擎的主要腳本語(yǔ)言,可用于開(kāi)發(fā)各種2D和3D游戲。Unity提供了豐富的游戲開(kāi)發(fā)組件和工具,簡(jiǎn)化了游戲開(kāi)發(fā)過(guò)程,使開(kāi)發(fā)者能夠快速創(chuàng)建高質(zhì)量的游戲。.NET框架簡(jiǎn)介定義.NET框架是由微軟公司開(kāi)發(fā)的一個(gè)用于構(gòu)建和運(yùn)行應(yīng)用程序的軟件框架。它提供了一個(gè)統(tǒng)一的編程環(huán)境,支持多種編程語(yǔ)言,如C#、VB.NET等。核心功能公共語(yǔ)言運(yùn)行時(shí)(CLR):負(fù)責(zé)管理程序的執(zhí)行,提供內(nèi)存管理、異常處理等服務(wù)。.NET框架類(lèi)庫(kù)(FCL):提供了一系列預(yù)定義的類(lèi)和接口,用于執(zhí)行各種常見(jiàn)的編程任務(wù)。特點(diǎn)跨語(yǔ)言互操作性:不同語(yǔ)言編寫(xiě)的代碼可以無(wú)縫地集成在一起。安全性和可靠性:提供安全的代碼執(zhí)行環(huán)境,減少安全漏洞。簡(jiǎn)化部署:提供簡(jiǎn)單的應(yīng)用程序部署和管理機(jī)制。.NET框架的組成部分1公共語(yǔ)言運(yùn)行時(shí)(CLR)CLR是.NET框架的核心組件,負(fù)責(zé)管理程序的執(zhí)行。它提供了內(nèi)存管理、異常處理、線(xiàn)程管理、安全檢查等服務(wù),確保程序的安全、可靠地運(yùn)行。2.NET框架類(lèi)庫(kù)(FCL)FCL是.NET框架提供的一系列預(yù)定義的類(lèi)和接口的集合。它包含了各種常用的類(lèi),如集合類(lèi)、IO類(lèi)、網(wǎng)絡(luò)類(lèi)、XML類(lèi)等,可以大大簡(jiǎn)化應(yīng)用程序的開(kāi)發(fā)。3應(yīng)用程序域(AppDomain)AppDomain是CLR中的一個(gè)邏輯隔離單元,用于隔離不同的應(yīng)用程序。每個(gè)AppDomain都有自己的內(nèi)存空間和安全策略,可以防止應(yīng)用程序之間的相互干擾。CLR:公共語(yǔ)言運(yùn)行時(shí)CLR的作用內(nèi)存管理:自動(dòng)分配和釋放內(nèi)存,避免內(nèi)存泄漏。異常處理:提供統(tǒng)一的異常處理機(jī)制,簡(jiǎn)化錯(cuò)誤處理。線(xiàn)程管理:支持多線(xiàn)程編程,提高程序并發(fā)性能。安全檢查:對(duì)代碼進(jìn)行安全檢查,防止惡意代碼執(zhí)行。CLR的執(zhí)行過(guò)程編譯:將C#代碼編譯成中間語(yǔ)言(CIL)。加載:將CIL代碼加載到CLR中。驗(yàn)證:對(duì)CIL代碼進(jìn)行驗(yàn)證,確保代碼安全。即時(shí)編譯(JIT):將CIL代碼即時(shí)編譯成機(jī)器碼。執(zhí)行:執(zhí)行機(jī)器碼。CIL:通用中間語(yǔ)言1CIL的定義CIL(CommonIntermediateLanguage),也稱(chēng)為MSIL(MicrosoftIntermediateLanguage),是.NET框架中的一種中間語(yǔ)言。C#、VB.NET等高級(jí)語(yǔ)言的代碼會(huì)被編譯成CIL代碼。2CIL的作用跨語(yǔ)言互操作性:不同語(yǔ)言編譯成CIL后,可以無(wú)縫地集成在一起。平臺(tái)無(wú)關(guān)性:CIL代碼可以在任何支持.NET框架的平臺(tái)上運(yùn)行。安全性:CIL代碼會(huì)被CLR進(jìn)行驗(yàn)證,確保代碼安全。3CIL的特點(diǎn)基于堆棧:CIL指令基于堆棧進(jìn)行操作。類(lèi)型安全:CIL代碼包含類(lèi)型信息,便于類(lèi)型檢查。面向?qū)ο螅篊IL支持面向?qū)ο蟮奶匦?,如?lèi)、繼承、多態(tài)等。CTS:通用類(lèi)型系統(tǒng)CTS的定義CTS(CommonTypeSystem)是.NET框架中的通用類(lèi)型系統(tǒng),定義了.NET框架中所有類(lèi)型的基礎(chǔ)規(guī)則。CTS確保不同語(yǔ)言可以無(wú)縫地互操作。1CTS的作用類(lèi)型統(tǒng)一:提供統(tǒng)一的類(lèi)型定義,確保不同語(yǔ)言使用相同的類(lèi)型。類(lèi)型檢查:支持類(lèi)型檢查,減少運(yùn)行時(shí)錯(cuò)誤。元數(shù)據(jù):提供元數(shù)據(jù),描述類(lèi)型的屬性、方法等信息。2CTS的分類(lèi)值類(lèi)型:如int、bool、struct等,存儲(chǔ)在棧上。引用類(lèi)型:如string、class、array等,存儲(chǔ)在堆上。3C#開(kāi)發(fā)環(huán)境搭建:VisualStudio安裝下載VisualStudio從微軟官網(wǎng)下載VisualStudio安裝包。運(yùn)行安裝包雙擊下載的安裝包,啟動(dòng)VisualStudio安裝程序。選擇組件選擇需要的組件,如.NET桌面開(kāi)發(fā)、ASP.NETWeb開(kāi)發(fā)等。開(kāi)始安裝點(diǎn)擊“安裝”按鈕,開(kāi)始安裝VisualStudio。VisualStudio使用入門(mén)創(chuàng)建新項(xiàng)目打開(kāi)VisualStudio,選擇“創(chuàng)建新項(xiàng)目”,選擇C#項(xiàng)目模板,如控制臺(tái)應(yīng)用、Windows窗體應(yīng)用等。編寫(xiě)代碼在代碼編輯器中編寫(xiě)C#代碼。VisualStudio提供了代碼提示、自動(dòng)完成等功能,可以提高編碼效率。生成解決方案點(diǎn)擊“生成”菜單,生成解決方案。VisualStudio會(huì)將C#代碼編譯成可執(zhí)行文件。運(yùn)行程序點(diǎn)擊“調(diào)試”菜單,運(yùn)行程序。VisualStudio會(huì)在調(diào)試模式下運(yùn)行程序,可以進(jìn)行調(diào)試。C#基本語(yǔ)法:數(shù)據(jù)類(lèi)型類(lèi)型描述范圍int整數(shù)-2147483648到2147483647float單精度浮點(diǎn)數(shù)±1.5x10^-45到±3.4x10^38double雙精度浮點(diǎn)數(shù)±5.0x10^-324到±1.7x10^308bool布爾值true或falsestring字符串Unicode字符序列值類(lèi)型與引用類(lèi)型值類(lèi)型存儲(chǔ)在棧上直接包含數(shù)據(jù)賦值時(shí)復(fù)制數(shù)據(jù)如:int、bool、struct、enum引用類(lèi)型存儲(chǔ)在堆上包含數(shù)據(jù)的引用賦值時(shí)復(fù)制引用如:string、class、array、interface變量的聲明與賦值1變量聲明在C#中,變量必須先聲明后使用。聲明變量需要指定變量的類(lèi)型和名稱(chēng)。intage;stringname;2變量賦值可以使用賦值運(yùn)算符“=”給變量賦值。賦值時(shí),變量的類(lèi)型必須與值的類(lèi)型匹配。age=20;name="張三";3變量初始化可以在聲明變量的同時(shí)進(jìn)行賦值,稱(chēng)為變量的初始化。intage=20;stringname="張三";常量常量的定義常量是指在程序運(yùn)行過(guò)程中值不能被改變的變量。在C#中,使用關(guān)鍵字“const”聲明常量。1常量的特點(diǎn)必須在聲明時(shí)賦值值不能被修改在編譯時(shí)確定值2常量的使用constdoublePI=3.1415926;constintMAX_VALUE=100;3運(yùn)算符:算術(shù)運(yùn)算符運(yùn)算符描述例子+加法x+y-減法x-y*乘法x*y/除法x/y%取模x%y運(yùn)算符:關(guān)系運(yùn)算符==等于。檢查兩個(gè)操作數(shù)的值是否相等,如果相等則條件為真。if(x==y){//...}!=不等于。檢查兩個(gè)操作數(shù)的值是否相等,如果不相等則條件為真。if(x!=y){//...}>大于。檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是則條件為真。if(x>y){//...}<小于。檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真。if(x<y){//...}運(yùn)算符:邏輯運(yùn)算符&&邏輯與。如果兩個(gè)操作數(shù)都為真,則條件為真。if(x>0&&y<10){//...}||邏輯或。如果兩個(gè)操作數(shù)中至少有一個(gè)為真,則條件為真。if(x>0||y<10){//...}!邏輯非。如果操作數(shù)為假,則條件為真。if(!isValid){//...}運(yùn)算符:賦值運(yùn)算符=賦值。將右操作數(shù)的值賦給左操作數(shù)。x=y;+=加法賦值。將左操作數(shù)加上右操作數(shù)的值,然后賦給左操作數(shù)。x+=y;//等價(jià)于x=x+y;-=減法賦值。將左操作數(shù)減去右操作數(shù)的值,然后賦給左操作數(shù)。x-=y;//等價(jià)于x=x-y;運(yùn)算符:位運(yùn)算符1&按位與。對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行與運(yùn)算。2|按位或。對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行或運(yùn)算。3^按位異或。對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行異或運(yùn)算。4~按位取反。對(duì)操作數(shù)的每一位進(jìn)行取反運(yùn)算。運(yùn)算符:條件運(yùn)算符條件運(yùn)算符的定義條件運(yùn)算符(?:)也稱(chēng)為三元運(yùn)算符,用于根據(jù)條件選擇不同的值。1條件運(yùn)算符的語(yǔ)法條件?表達(dá)式1:表達(dá)式2;2條件運(yùn)算符的例子intage=20;stringresult=age>=18?"成年人":"未成年人";3表達(dá)式與語(yǔ)句表達(dá)式表達(dá)式是由運(yùn)算符和操作數(shù)組成的序列,用于計(jì)算一個(gè)值。例如:x+y、age>=18等。語(yǔ)句語(yǔ)句是C#程序的基本執(zhí)行單元,用于完成特定的任務(wù)。語(yǔ)句以分號(hào)結(jié)尾。例如:intage=20;、Console.WriteLine("Hello");等。語(yǔ)句塊語(yǔ)句塊是由一對(duì)花括號(hào)“{}”括起來(lái)的語(yǔ)句序列。語(yǔ)句塊可以包含多個(gè)語(yǔ)句,用于完成復(fù)雜的任務(wù)??刂屏鳎喉樞蚪Y(jié)構(gòu)順序結(jié)構(gòu)的定義順序結(jié)構(gòu)是指程序按照語(yǔ)句的先后順序依次執(zhí)行。這是最基本的控制流結(jié)構(gòu)。順序結(jié)構(gòu)的例子intx=10;inty=20;intsum=x+y;Console.WriteLine(sum);控制流:選擇結(jié)構(gòu):if語(yǔ)句語(yǔ)法描述if(條件){//語(yǔ)句塊}如果條件為真,則執(zhí)行語(yǔ)句塊。例子intage=20;if(age>=18){Console.WriteLine("成年人");}控制流:選擇結(jié)構(gòu):if...else語(yǔ)句語(yǔ)法if(條件){//語(yǔ)句塊1}else{//語(yǔ)句塊2}描述如果條件為真,則執(zhí)行語(yǔ)句塊1;否則,執(zhí)行語(yǔ)句塊2。例子intage=20;if(age>=18){Console.WriteLine("成年人");}else{Console.WriteLine("未成年人");}控制流:選擇結(jié)構(gòu):switch語(yǔ)句1語(yǔ)法switch(表達(dá)式){case值1://語(yǔ)句塊1break;case值2://語(yǔ)句塊2break;default://語(yǔ)句塊3break;}2描述根據(jù)表達(dá)式的值選擇不同的語(yǔ)句塊執(zhí)行。如果表達(dá)式的值與某個(gè)case的值匹配,則執(zhí)行該case對(duì)應(yīng)的語(yǔ)句塊。如果表達(dá)式的值與所有case的值都不匹配,則執(zhí)行default對(duì)應(yīng)的語(yǔ)句塊。3例子intday=3;switch(day){case1:Console.WriteLine("星期一");break;case2:Console.WriteLine("星期二");break;default:Console.WriteLine("其他");break;}控制流:循環(huán)結(jié)構(gòu):for循環(huán)語(yǔ)法for(初始化;條件;迭代){//循環(huán)體}1描述for循環(huán)用于重復(fù)執(zhí)行一段代碼。初始化部分用于初始化循環(huán)變量,條件部分用于判斷循環(huán)是否繼續(xù)執(zhí)行,迭代部分用于更新循環(huán)變量。2例子for(inti=0;i<10;i++){Console.WriteLine(i);}3控制流:循環(huán)結(jié)構(gòu):while循環(huán)語(yǔ)法while(條件){//循環(huán)體}描述while循環(huán)用于重復(fù)執(zhí)行一段代碼,只要條件為真,循環(huán)就會(huì)一直執(zhí)行下去。例子inti=0;while(i<10){Console.WriteLine(i);i++;}控制流:循環(huán)結(jié)構(gòu):do...while循環(huán)語(yǔ)法do{//循環(huán)體}while(條件);描述do...while循環(huán)與while循環(huán)類(lèi)似,但do...while循環(huán)會(huì)先執(zhí)行一次循環(huán)體,然后再判斷條件是否為真。因此,do...while循環(huán)至少會(huì)執(zhí)行一次。例子inti=0;do{Console.WriteLine(i);i++;}while(i<10);控制流:循環(huán)控制語(yǔ)句:breakbreak語(yǔ)句描述作用用于立即終止循環(huán)的執(zhí)行,跳出循環(huán)體。例子for(inti=0;i<10;i++){if(i==5){break;}Console.WriteLine(i);}控制流:循環(huán)控制語(yǔ)句:continuecontinue語(yǔ)句用于跳過(guò)當(dāng)前循環(huán)迭代,繼續(xù)執(zhí)行下一次迭代。例子for(inti=0;i<10;i++){if(i==5){continue;}Console.WriteLine(i);}數(shù)組:數(shù)組的概念1數(shù)組的定義數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)相同類(lèi)型的元素的集合。數(shù)組中的每個(gè)元素都有一個(gè)索引,用于訪(fǎng)問(wèn)該元素。2數(shù)組的特點(diǎn)元素類(lèi)型相同元素在內(nèi)存中連續(xù)存儲(chǔ)可以通過(guò)索引訪(fǎng)問(wèn)元素3數(shù)組的用途數(shù)組可以用于存儲(chǔ)各種類(lèi)型的數(shù)據(jù),如整數(shù)、浮點(diǎn)數(shù)、字符串等。數(shù)組常用于處理大量數(shù)據(jù),如存儲(chǔ)學(xué)生成績(jī)、員工信息等。數(shù)組的聲明與初始化數(shù)組聲明int[]numbers;//聲明一個(gè)整數(shù)數(shù)組string[]names;//聲明一個(gè)字符串?dāng)?shù)組1數(shù)組初始化numbers=newint[5];//創(chuàng)建一個(gè)包含5個(gè)整數(shù)的數(shù)組names=newstring[]{"張三","李四","王五"};//創(chuàng)建一個(gè)包含3個(gè)字符串的數(shù)組2數(shù)組聲明和初始化同時(shí)進(jìn)行int[]numbers=newint[5];string[]names=newstring[]{"張三","李四","王五"};3多維數(shù)組多維數(shù)組的定義多維數(shù)組是指具有多個(gè)維度的數(shù)組。例如,二維數(shù)組可以看作是一個(gè)表格,具有行和列。多維數(shù)組的聲明int[,]matrix;//聲明一個(gè)二維整數(shù)數(shù)組string[,,]cube;//聲明一個(gè)三維字符串?dāng)?shù)組多維數(shù)組的初始化matrix=newint[3,4];//創(chuàng)建一個(gè)3行4列的二維整數(shù)數(shù)組cube=newstring[2,3,4];//創(chuàng)建一個(gè)2x3x4的三維字符串?dāng)?shù)組數(shù)組的遍歷使用for循環(huán)遍歷數(shù)組int[]numbers=newint[]{1,2,3,4,5};for(inti=0;i<numbers.Length;i++){Console.WriteLine(numbers[i]);}使用foreach循環(huán)遍歷數(shù)組int[]numbers=newint[]{1,2,3,4,5};foreach(intnumberinnumbers){Console.WriteLine(number);}字符串:String類(lèi)的使用String類(lèi)描述定義String類(lèi)是C#中用于表示字符串的類(lèi)。字符串是Unicode字符的序列。特點(diǎn)String對(duì)象是不可變的,即創(chuàng)建后不能被修改。String類(lèi)提供了豐富的字符串操作方法。使用stringmessage="Hello,world!";Console.WriteLine(message);字符串:字符串的常用方法Length獲取字符串的長(zhǎng)度。stringmessage="Hello,world!";intlength=message.Length;//length=13ToUpper將字符串轉(zhuǎn)換為大寫(xiě)。stringmessage="Hello,world!";stringupper=message.ToUpper();//upper="HELLO,WORLD!"ToLower將字符串轉(zhuǎn)換為小寫(xiě)。stringmessage="Hello,world!";stringlower=message.ToLower();//lower="hello,world!"面向?qū)ο缶幊蹋侯?lèi)與對(duì)象1類(lèi)類(lèi)是對(duì)象的藍(lán)圖或模板,用于定義對(duì)象的屬性和行為。類(lèi)是一種抽象的概念,用于描述具有相同特征的對(duì)象的集合。2對(duì)象對(duì)象是類(lèi)的實(shí)例,是具有具體屬性和行為的實(shí)體。對(duì)象是類(lèi)的具體化,是程序中可以操作的實(shí)體。3類(lèi)與對(duì)象的關(guān)系類(lèi)是對(duì)象的抽象,對(duì)象是類(lèi)的具體。一個(gè)類(lèi)可以創(chuàng)建多個(gè)對(duì)象,每個(gè)對(duì)象都有自己的屬性值和行為。類(lèi)的定義類(lèi)的語(yǔ)法classClassName{//成員變量//成員方法}1類(lèi)的例子classPerson{publicstringName;publicintAge;publicvoidSayHello(){Console.WriteLine("Hello,mynameis"+Name);}}2類(lèi)的組成成員變量(字段):用于存儲(chǔ)對(duì)象的狀態(tài)。成員方法:用于定義對(duì)象的行為。3對(duì)象的創(chuàng)建創(chuàng)建對(duì)象的語(yǔ)法ClassNameobjectName=newClassName();創(chuàng)建對(duì)象的例子Personperson=newPerson();訪(fǎng)問(wèn)對(duì)象的成員person.Name="張三";person.Age=20;person.SayHello();類(lèi)的成員:字段字段的定義字段是類(lèi)中用于存儲(chǔ)數(shù)據(jù)的變量。字段用于描述對(duì)象的狀態(tài)。字段的特點(diǎn)每個(gè)對(duì)象都有自己的字段副本。字段可以有不同的訪(fǎng)問(wèn)修飾符,如public、private等。字段的例子classPerson{publicstringName;privateintage;}類(lèi)的成員:屬性屬性描述定義屬性是一種特殊的類(lèi)成員,用于訪(fǎng)問(wèn)和修改對(duì)象的狀態(tài)。屬性提供了一種封裝字段的方式,可以控制對(duì)字段的訪(fǎng)問(wèn)。語(yǔ)法publicstringName{get{returnname;}set{name=value;}}使用Personperson=newPerson();person.Name="張三";//設(shè)置Name屬性stringname=person.Name;//獲取Name屬性類(lèi)的成員:方法方法的定義方法是類(lèi)中用于定義對(duì)象行為的成員。方法用于執(zhí)行特定的任務(wù),可以接收參數(shù)并返回值。方法的語(yǔ)法publicvoidSayHello(){Console.WriteLine("Hello,world!");}方法的調(diào)用Personperson=newPerson();person.SayHello();//調(diào)用SayHello方法構(gòu)造函數(shù)1構(gòu)造函數(shù)的定義構(gòu)造函數(shù)是一種特殊的類(lèi)成員,用于創(chuàng)建和初始化對(duì)象。構(gòu)造函數(shù)的名稱(chēng)與類(lèi)名相同,沒(méi)有返回值。2構(gòu)造函數(shù)的特點(diǎn)構(gòu)造函數(shù)在創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用。一個(gè)類(lèi)可以有多個(gè)構(gòu)造函數(shù),稱(chēng)為構(gòu)造函數(shù)重載。如果沒(méi)有定義構(gòu)造函數(shù),編譯器會(huì)自動(dòng)生成一個(gè)默認(rèn)構(gòu)造函數(shù)。3構(gòu)造函數(shù)的例子classPerson{publicstringName;publicintAge;publicPerson(stringname,intage){Name=name;Age=age;}}析構(gòu)函數(shù)析構(gòu)函數(shù)的定義析構(gòu)函數(shù)是一種特殊的類(lèi)成員,用于在對(duì)象被銷(xiāo)毀時(shí)執(zhí)行清理操作。析構(gòu)函數(shù)的名稱(chēng)與類(lèi)名相同,但以“~”開(kāi)頭,沒(méi)有參數(shù)和返回值。1析構(gòu)函數(shù)的特點(diǎn)析構(gòu)函數(shù)在對(duì)象被垃圾回收器回收時(shí)自動(dòng)調(diào)用。一個(gè)類(lèi)只能有一個(gè)析構(gòu)函數(shù)。析構(gòu)函數(shù)用于釋放對(duì)象占用的資源,如文件句柄、網(wǎng)絡(luò)連接等。2析構(gòu)函數(shù)的例子classPerson{~Person(){//釋放資源}}3訪(fǎng)問(wèn)修飾符:publicpublic的定義public訪(fǎng)問(wèn)修飾符表示成員可以被任何代碼訪(fǎng)問(wèn),包括類(lèi)外部的代碼。public的特點(diǎn)公開(kāi)的成員,可以被任何代碼訪(fǎng)問(wèn)。使用public修飾符的字段和方法,可以被其他類(lèi)直接訪(fǎng)問(wèn)。public的例子classPerson{publicstringName;publicvoidSayHello(){}}訪(fǎng)問(wèn)修飾符:privateprivate的定義private訪(fǎng)問(wèn)修飾符表示成員只能被類(lèi)內(nèi)部的代碼訪(fǎng)問(wèn),不能被類(lèi)外部的代碼訪(fǎng)問(wèn)。private的特點(diǎn)私有的成員,只能被類(lèi)內(nèi)部的代碼訪(fǎng)問(wèn)。使用private修飾符的字段和方法,不能被其他類(lèi)直接訪(fǎng)問(wèn),只能通過(guò)屬性或方法間接訪(fǎng)問(wèn)。private的例子classPerson{privateintage;}訪(fǎng)問(wèn)修飾符:protectedprotected描述定義protected訪(fǎng)問(wèn)修飾符表示成員可以被類(lèi)內(nèi)部的代碼和子類(lèi)的代碼訪(fǎng)問(wèn),不能被類(lèi)外部的代碼訪(fǎng)問(wèn)。特點(diǎn)受保護(hù)的成員,可以被類(lèi)內(nèi)部的代碼和子類(lèi)的代碼訪(fǎng)問(wèn)。例子classPerson{protectedstringName;}classStudent:Person{publicvoidPrintName(){Console.WriteLine(Name);//可以訪(fǎng)問(wèn)Name}}訪(fǎng)問(wèn)修飾符:internalinternal的定義internal訪(fǎng)問(wèn)修飾符表示成員可以被同一程序集中的任何代碼訪(fǎng)問(wèn),不能被其他程序集中的代碼訪(fǎng)問(wèn)。internal的特點(diǎn)程序集內(nèi)部可訪(fǎng)問(wèn)的成員,可以被同一程序集中的任何代碼訪(fǎng)問(wèn)。使用internal修飾符的字段和方法,不能被其他程序集直接訪(fǎng)問(wèn)。internal的例子classPerson{internalstringName;}繼承:繼承的概念1繼承的定義繼承是一種面向?qū)ο缶幊痰闹匾匦裕试S一個(gè)類(lèi)(子類(lèi))繼承另一個(gè)類(lèi)(父類(lèi))的屬性和行為。繼承可以提高代碼的重用性和可維護(hù)性。2繼承的特點(diǎn)子類(lèi)繼承父類(lèi)的所有非private成員。子類(lèi)可以添加自己的成員,擴(kuò)展父類(lèi)的功能。C#只支持單繼承,即一個(gè)類(lèi)只能繼承一個(gè)父類(lèi)。3繼承的用途繼承可以用于創(chuàng)建類(lèi)的層次結(jié)構(gòu),將具有共同特征的類(lèi)抽象成父類(lèi),然后讓子類(lèi)繼承父類(lèi),實(shí)現(xiàn)代碼的重用。繼承的實(shí)現(xiàn)繼承的語(yǔ)法classSubClass:BaseClass{//子類(lèi)的成員}1繼承的例子classPerson{publicstringName;publicintAge;}classStudent:Person{publicstringStudentID;}2子類(lèi)可以訪(fǎng)問(wèn)父類(lèi)的成員Studentstudent=newStudent();student.Name="張三";//訪(fǎng)問(wèn)父類(lèi)的Name成員student.StudentID="12345";//訪(fǎng)問(wèn)子類(lèi)的StudentID成員3虛方法與重寫(xiě)虛方法虛方法是指使用關(guān)鍵字“virtual”修飾的方法。虛方法可以在子類(lèi)中被重寫(xiě),實(shí)現(xiàn)多態(tài)。重寫(xiě)重寫(xiě)是指子類(lèi)重新定義父類(lèi)的虛方法,使用關(guān)鍵字“override”修飾。重寫(xiě)方法必須與虛方法具有相同的簽名。例子classPerson{publicvirtualvoidSayHello(){Console.WriteLine("Hello,Iamaperson.");}}classStudent:Person{publicoverridevoidSayHello(){Console.WriteLine("Hello,Iamastudent.");}}抽象類(lèi)與接口抽象類(lèi)抽象類(lèi)是指使用關(guān)鍵字“abstract”修飾的類(lèi)。抽象類(lèi)不能被實(shí)例化,只能被繼承。抽象類(lèi)可以包含抽象方法和非抽象方法。抽象方法是指沒(méi)有實(shí)現(xiàn)的方法,必須在子類(lèi)中被重寫(xiě)。接口接口是一種定義行為規(guī)范的抽象類(lèi)型。接口只包含方法的簽名,沒(méi)有實(shí)現(xiàn)。類(lèi)可以實(shí)現(xiàn)多個(gè)接口,實(shí)現(xiàn)接口必須實(shí)現(xiàn)接口中的所有方法。多態(tài):多態(tài)的概念多態(tài)描述定義多態(tài)是指對(duì)象可以表現(xiàn)出多種形態(tài)。多態(tài)可以通過(guò)繼承和接口實(shí)現(xiàn)。特點(diǎn)提高了代碼的靈活性和可擴(kuò)展性。可以編寫(xiě)通用的代碼,處理不同類(lèi)型的對(duì)象。例子Personperson=newStudent();//父類(lèi)引用指向子類(lèi)對(duì)象person.SayHello();//調(diào)用子類(lèi)的SayHello方法多態(tài)的實(shí)現(xiàn)通過(guò)繼承實(shí)現(xiàn)多態(tài)classPerson{publicvirtualvoidSayHello(){}}classStudent:Person{publicoverridevoidSayHello(){}}通過(guò)接口實(shí)現(xiàn)多態(tài)interfaceISpeak{voidSayHello();}
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZNZ 264.2-2024 重金屬中度污染農(nóng)田土壤修復(fù)和安全利用技術(shù)規(guī)范 第2部分:超積累東南景天與中稻輪作
- T-ZZB 3744-2024 制革用陰離子型磺化油
- T-ZMDS 20008-2024 醫(yī)療器械嵌入式軟件漏洞評(píng)估方法
- 2025年度解除農(nóng)業(yè)合作項(xiàng)目的聲明書(shū)
- 二零二五年度綠化苗木購(gòu)銷(xiāo)與城市綠化養(yǎng)護(hù)服務(wù)合同
- 二零二五年度實(shí)習(xí)教師與教育機(jī)構(gòu)教育咨詢(xún)服務(wù)合同
- 二零二五年度共享住宅租賃正規(guī)協(xié)議書(shū)范本及環(huán)保要求
- 二零二五年度勞動(dòng)合同主體變更及培訓(xùn)交接服務(wù)合同
- 2025年度水產(chǎn)養(yǎng)殖水質(zhì)改良與養(yǎng)魚(yú)合同
- 二零二五年度人社部員工勞動(dòng)合同勞動(dòng)合同電子簽名與認(rèn)證合同
- 2025年01月公安部第三研究所公開(kāi)招聘人民警察筆試筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025-2030全球鋰電池用隔膜行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年南京鐵道職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 《抖音高活躍群體研究報(bào)告》
- 2025年高考作文備考訓(xùn)練之二元思辨作文題目解析及范文:我與“別人”
- 《中央集成式商用車(chē)電驅(qū)動(dòng)橋總成技術(shù)要求及臺(tái)架試驗(yàn)方法》
- 2024年江西應(yīng)用工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 第1課 中國(guó)古代政治制度的形成與發(fā)展 課件-歷史統(tǒng)編版(2019)選擇性必修1國(guó)家制度與社會(huì)治理
- 2025年中國(guó)中煤校園招聘筆試參考題庫(kù)含答案解析
- 開(kāi)曼群島公司法2024版中文譯本(含2024年修訂主要內(nèi)容)
- 東北師大附屬中學(xué)2025屆高考數(shù)學(xué)四模試卷含解析
評(píng)論
0/150
提交評(píng)論