C#面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)全套課件_第1頁
C#面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)全套課件_第2頁
C#面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)全套課件_第3頁
C#面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)全套課件_第4頁
C#面向?qū)ο蟪绦蛟O(shè)計(jì)(微課版)全套課件_第5頁
已閱讀5頁,還剩286頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)——第1章了解.NET框架第1章了解.NET框架.ppt第2章C#編程入門.ppt第3章使用常見類型.ppt第4章表達(dá)式和運(yùn)算符.ppt第5章掌握類的基本概念.ppt第6章使用類的方法.ppt第7章掌握類的高級概念.ppt第8章掌握類的繼承.ppt第9章使用接口.ppt第10章使用結(jié)構(gòu)體.ppt第11章使用枚舉.ppt第12章使用數(shù)組.ppt第13章使用委托.ppt第14章事件.ppt第15章類型轉(zhuǎn)換.ppt第16章異常處理.ppt二、C#項(xiàng)目目錄一、認(rèn)識.NET框架的組成.NETFramework為其運(yùn)行的應(yīng)用程序提供各種服務(wù)的托管執(zhí)行環(huán)境。它包括兩個主要組件:作為處理運(yùn)行的應(yīng)用程序的執(zhí)行引擎的公共語言運(yùn)行時(CLR);以及.NETFramework類庫,此類庫提供開發(fā)人員可從其自己的應(yīng)用程序中調(diào)用的已測試的可重用代碼庫。一、認(rèn)識.NET框架的組成一、認(rèn)識.NET框架的組成一、認(rèn)識.NET框架的組成名稱描述csc.exe(C#編譯工具)C#程序編譯工具。Regasm.exe(程序集注冊工具)讀取程序集中的元數(shù)據(jù),并在注冊表中添加必要的項(xiàng)。這使

COM客戶端可以顯示為

.NETFramework類。Sn.exe(強(qiáng)名稱工具)幫助創(chuàng)建帶強(qiáng)名稱的程序集。此工具提供有關(guān)密鑰管理、簽名生成和簽名驗(yàn)證的選項(xiàng)。Gacutil.exe(全局程序集緩存工具)全局程序集緩存工具可以查看和操作全局程序集緩存和下載緩存的內(nèi)容??蚣芄ぞ叩目蓤?zhí)行文件通常位于\framework\版本\目錄下的文件夾BCL提供最基本的類型和實(shí)用工具功能,是其他所有.NET類庫的基礎(chǔ)。BCL旨在提供極其通用的實(shí)現(xiàn),對所有工作負(fù)荷一視同仁。性能始終是一個重要的考慮因素,因?yàn)閼?yīng)用可能會優(yōu)先使用特定的策略,例如,優(yōu)先考慮低延遲而不是高吞吐量,或者優(yōu)先考慮低內(nèi)存而不是低CPU使用率。這些庫在總體上可以保證高性能,同時會根據(jù)不同的性能考慮因素采取折衷方案。一、認(rèn)識.NET框架的組成CLR(commonlanguageruntime)即公共語言運(yùn)行庫,是托管代碼執(zhí)行核心中的引擎。CLR為托管代碼提供各種服務(wù),如跨語言集成、跨語言異常處理、增強(qiáng)的安全性、版本控制和部署支持、簡化的組件交互模型、調(diào)試和分析服務(wù)等。使CLR能夠向托管代碼提供服務(wù),語言編譯器必須生成一些元數(shù)據(jù)來描述代碼中的類型、成員和引用。一、認(rèn)識.NET框架的組成一、認(rèn)識.NET框架的組成二、C#項(xiàng)目文件擴(kuò)展名相關(guān)說明.csprojC#項(xiàng)目文件,包括VS版本,文件和代碼引用等信息.csproj.user是一個配置文件,自動生成的,會記錄項(xiàng)目生成路徑、項(xiàng)目啟動程序等信息.sln在開發(fā)環(huán)境中使用的解決方案文件。它將一個或多個項(xiàng)目的所有元素組織到單個的解決方案中。此文件存儲在父項(xiàng)目目錄中.解決方案文件,他是一個或多個.proj(項(xiàng)目)的集合。.csc#源代碼文件二、C#項(xiàng)目作為一種代碼指令平臺,Microsoft.NET比微軟公司先前推出的其他技術(shù)平臺要來得更為復(fù)雜。由于.NET提供了對多種編程語言以及(在理論上說)多重平臺的支持,這就需要在傳統(tǒng)的兩個代碼層添加一個中間代碼層。在這里,傳統(tǒng)的兩層分別是源代碼層和編譯后的本機(jī)代碼層。二、C#項(xiàng)目(1)編譯成CIL并執(zhí)行二、C#項(xiàng)目(2)編譯成本機(jī)代碼并執(zhí)行.Netframework安裝目錄下(如C:\Windows\Microsoft.NET\Framework\v4.0.30319)有一個ngen.exe工具,可以使用該工具產(chǎn)生機(jī)器碼文件。

謝謝C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)——第2章C#編程入門二、完成程序編譯和執(zhí)行目錄一、編寫簡單程序1、編寫簡單程序usingSystem;namespaceChapter2{classProgram{ publicstaticvoidMain() { Console.WriteLine("HelloWorld!");//Console.WriteLine命令行上打印輸出內(nèi)容

}}一、編寫簡單程序行號內(nèi)容解讀1使用System命名空間的類型,該語句必須用分號結(jié)束。2當(dāng)前程序的命名空間為Chapter2,緊跟在其后的是一對大括號,大括號內(nèi)可以書寫程序中用的類型。4定義一個類,類名為Program,Program后面緊跟一對大括號,大括號內(nèi)書寫該類型的成員。6定義一個名為Main的成員方法。Main方法是特殊的成員方法,將作為程序運(yùn)行的入口。8Main方法只書寫一句語句,執(zhí)行后將在控制臺打印輸出一句話:HelloWorld!。該語句分號后的“//”,表明后面的語句為注釋,注釋語句不參與運(yùn)行。一、編寫簡單程序一、編寫簡單程序格式化輸出語句Console.WriteLine("HelloWorld!");該語句的作用是實(shí)現(xiàn)命令汗打印輸出。在小括號中的“HelloWorld!”作為Console.WriteLine方法的參數(shù)出現(xiàn)。

一、編寫簡單程序Console.WriteLine("{0}+{1}",1,2);其中”{0}”和”{1}”稱為替換標(biāo)記,而第一個參數(shù)“{0}+{1}”稱為格式字符串,第二個參數(shù)和第三個參數(shù)稱為替換值。在實(shí)際輸出時,格式字符串中替換標(biāo)記”{0}”和”{1}”起到了占位符的作用,在打印輸出時,由后面的替換值按照替換標(biāo)記中的順序選擇輸出

二、編寫簡單程序常見的數(shù)字格式字符串“D”或“d”Decimal結(jié)果:整型數(shù)字,負(fù)號可選。受以下類型支持:僅整型。精度說明符:最小位數(shù)。默認(rèn)值精度說明符:所需的最小位數(shù)。Console.WriteLine("{0:D4",1234)輸出:1234“E”或“e”指數(shù)(科學(xué)型)結(jié)果:指數(shù)記數(shù)法。受以下類型支持:所有數(shù)值類型。精度說明符:小數(shù)位數(shù)。默認(rèn)值精度說明符:6。Console.WriteLine("{0:E",1052.0329112756)輸出:1.052033E+003“F”或“f”浮點(diǎn)結(jié)果:整數(shù)和小數(shù),負(fù)號可選。受以下類型支持:所有數(shù)值類型。精度說明符:小數(shù)位數(shù)。Console.WriteLine("{0:F2}",4.567)輸出:4.57二、編寫簡單程序staticvoidMain(){

……//語句}

程序入口二、完成程序編譯和執(zhí)行編譯方式(1)使用手工工具(2)使用集成工具二、完成程序編譯和執(zhí)行(1)使用手工工具(csc工具)參數(shù)名相關(guān)說明/out指定輸出文件/target指定輸出文件的格式/optimize啟用/禁用優(yōu)化。/debug指示編譯器發(fā)出調(diào)試信息。/define定義預(yù)處理器符號。二、完成程序編譯和執(zhí)行(2)使用集成工具

謝謝C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)——第3章使用常見類型二、認(rèn)識自定義類型分類目錄一、認(rèn)識類型一、認(rèn)識類型值類型和引用類型學(xué)習(xí)一門程序設(shè)計(jì)語言必須要了解它提供的數(shù)據(jù)類型,了解它的功能和限制,才能為程序設(shè)計(jì)選擇合適的數(shù)據(jù)類型。C#中將所有的數(shù)據(jù)類型分為兩大類:值類型和引用類型。值類型變量存儲實(shí)際的值,而引用變量則存儲指向數(shù)據(jù)的地址,所以對于同一個數(shù)據(jù)可以有多個引用。值類型的變量直接存儲實(shí)際數(shù)據(jù),都具有固定的長度,了解它的功能與限制,才能為程序設(shè)計(jì)選擇合適的數(shù)據(jù)類型。簡單值類型可以分為整數(shù)類型、字符類型、實(shí)數(shù)類型、布爾類型,復(fù)合型值類型包括結(jié)構(gòu)類型和枚舉類型。一、認(rèn)識類型

類型名別名字節(jié)后綴默認(rèn)值類名有符號整型字節(jié)型sbyte1

0System.Sbyte短整型short2

0Int16整型int4

0Int32長整型long8l或L0Int64無符號整型字節(jié)型byte1

0Byte短整型ushort2

0UInt16整型uint4u或U0Uint32長整型ulong8ul或UL0Uint64表2-1常用整數(shù)類型一、認(rèn)識類型一般按照如下方式對整型進(jìn)行確定:如果該整數(shù)沒有后綴,則它屬于以下所列的類型中第一個能夠表示其值的那個類型:int,uint,long,ulong;如果該整數(shù)帶有后綴U或u,則它屬于以下所列的類型中第一個能夠表示其值的那個類型:uint,ulong;如果該整數(shù)帶有后綴L

或l,則它屬于以下所列的類型中第一個能夠表示其值的那個類型:

long,ulong;如果該整數(shù)帶有后綴UL、Ul、uL、ul、LU、Lu、lU或lu,則它屬于ulong類型;若超出了ulong的范圍,將發(fā)生編譯錯誤。整數(shù)可以用十進(jìn)制或十六進(jìn)制數(shù)進(jìn)行表示,如下所示。一、認(rèn)識類型實(shí)數(shù)類型包括float、double以及decimal3種類型,分別稱為單精度、雙精度以及固定精度類型,如表2-2所示。

類型名別名字節(jié)后綴默認(rèn)值類名實(shí)數(shù)類型單精度float4f或F0.0fSingle雙精度double8d或D或缺省0.0Double高精度decimal16m或M0.0mDecimal表2-2實(shí)數(shù)類型一、認(rèn)識類型浮點(diǎn)數(shù)可以用十進(jìn)制數(shù)或冪的形式表示。decimal類型通常用于財(cái)務(wù)計(jì)算。浮點(diǎn)數(shù)的書寫方法如下所示,一、認(rèn)識類型字符(char)類型表示Unicode字符,是無符號的16位整數(shù),可容納65535個組成Unicode字符空間的數(shù)值。char值可寫成如下幾種形式,一、認(rèn)識類型轉(zhuǎn)義字符是以“\”為首的兩個特殊字符標(biāo)記,表示特殊的含義,常見的轉(zhuǎn)義字符如表2-3所示。字符含義Unicode碼\’單引號0x0027\”雙引號0x0022\\反斜杠0x005C\0空字符0x0000\a警鈴0x0007\b退格0x0008\f換頁0x000C\n換行0x000A\r回車0x000D\t水平制表0x0009\v垂直制表0x000B一、認(rèn)識類型布爾(bool)類型是邏輯值,取值只能是true或者false。布爾類型對應(yīng)于.NET類庫中的System.Boolean結(jié)構(gòu),它在計(jì)算機(jī)中占4個字節(jié)。在程序中使用時,一般是通過對其的判斷來控制程序的執(zhí)行。1、認(rèn)識類型引用類型是C#的另一種數(shù)據(jù)類型。“引用”在此處的含義為該類型的變量不直接存儲包含的值,而是存儲該值在內(nèi)存中的存儲位置。也就是說,引用類型的變量指向被引用的對象,它存儲的是實(shí)際值的“引用”(即地址或指針)。C#預(yù)定義了兩種引用類型object類型以及string類型。一、認(rèn)識類型object類型是所有值類型和引用類型的基類,幾乎所有的數(shù)據(jù)類型都是直接或間接地從object類型集成而來的。一般的說,當(dāng)若干個引用類型的變量引用同一個對象時,無論通過哪一個引用變量改變其引用對象的屬性,其他引用變量引用的對象的屬性也會隨之改變。定義一個對象類型的變量:下面的代碼聲明了一個對象類型的變量a,并分別將整數(shù)類型和浮點(diǎn)類型的值賦給它:定義為object類型的變量可以接收任何類型的數(shù)值。一、認(rèn)識類型string類型雖然也是引用類型,但它的工作方式更像值類型,如下代碼所示,上述代碼中,s2和s1都引用了同一個字符串類型,但是當(dāng)s1的值發(fā)生改變時,例如,s2的值仍然為“hello”。之所以會這樣,是因?yàn)楫?dāng)改變s1的值時,新創(chuàng)建了一個string對象,s1引用這個新的string對象,而s2仍然引用原來的string對象,兩個對象是獨(dú)立的,故s1的變化不會影響到s2.由此可見,string對象是恒定的,也就是說,一旦一個string對象被創(chuàng)建,它的值就不能再修改,所以當(dāng)改變一個字符串變量的值得時候,僅僅是新創(chuàng)建了一個包含修改內(nèi)容的新的string對象。string類型代表不可變的Unicode字符,是System.String類的別名。字符串在編程中的使用非常普遍,字符串的值是通過雙引號把字符引起來生成的。除了object類型和string類型的引用類型之外,類、數(shù)組、接口以及委托等也是引用類型。一、認(rèn)識類型在進(jìn)行批量處理數(shù)據(jù)的時候,經(jīng)常要用到數(shù)組。數(shù)組是一組類型相同的有序數(shù)據(jù)。數(shù)組按照數(shù)組名、數(shù)組元素的類型和維數(shù)進(jìn)行描述。C#中提供的System.Array類是所有數(shù)組類型的基類。聲明數(shù)組的語法格式如下,下列代碼聲明一個整數(shù)數(shù)組array,在定義數(shù)組的時候,可以預(yù)先指定數(shù)組元素的個數(shù),這時在“[]”中指定數(shù)組的元素個數(shù)。數(shù)組元素的個數(shù)可以通過數(shù)組名加“.”加“Length”來或得。在使用數(shù)組的時候,可以在“[]”中加下標(biāo)來取得對應(yīng)的數(shù)組元素。C#中的數(shù)組元素的下標(biāo)是從0開始的,也就是說,第一個元素對應(yīng)的下標(biāo)為0,以后元素的下標(biāo)依次增加。關(guān)于數(shù)組的詳細(xì)介紹,將在12章進(jìn)行。一、認(rèn)識類型變量是C#程序中的基本存儲單元,每一個變量都由一個變量名來標(biāo)識,每一個變量都有一個類型,這個類型決定何種類型的數(shù)據(jù)可以被存儲在這個變量中。變量包括變量名、變量類型、變量作用域、和變量的生存期4個要素。變量名必須是合法的標(biāo)識符,即符合下述規(guī)則。(1)變量名必須以字母開頭(2)變量名只能由字母、數(shù)字以及下劃線組成,而不能包含空格、標(biāo)點(diǎn)符號以及運(yùn)算符等。(3)變量名不能與C#中的關(guān)鍵字相同。(4)變量名不能與C#的庫函數(shù)名稱相同。在C#中存在一點(diǎn)例外,即允許在變量名前加“@”。在此情況下,可將“@”前綴加在關(guān)鍵字前邊作為變量的名稱。這主要是為了避免與其他語言進(jìn)行交互時發(fā)生沖突。因?yàn)椤癅”其實(shí)并不是關(guān)鍵字的一部分,其他的編程語言會將其作為一個普通的變量名。在其他的情況下,建議不要加@前綴。一、認(rèn)識類型變量類型指明變量的存儲長度和操作行為。變量的作用域表明哪些代碼可以訪問變量,是全局的還是局部的,變量的生存期指的是變量在內(nèi)存中存在的周期。創(chuàng)建變量是通過聲明類型并標(biāo)識它的名字來完成的,變量必須先聲明,后使用。聲明變量的語法如下,屬性和修飾符將在后續(xù)的章節(jié)進(jìn)行詳細(xì)介紹,數(shù)據(jù)類型是指變量的類型,變量名是變量的名稱,下邊列出一些合法以及不合法的變量名,盡管符合了上述要求的變量名便可以正常使用,但在給變量取名時,還應(yīng)使其見名知意,這樣寫出的程序才便于所有人理解。例如對于一個人,明明時可以是people,若使用abcd便不是一個好的選擇。一、認(rèn)識類型在對變量進(jìn)行命名時,可同時命名多個,代碼如下,需要注意的是,C#要求變量在使用前必須初始化,即變量在被使用前必須賦初值,聲明一個變量的時候,初始化或不初始化均可,但在使用前必須初始化。表2-4列出了所有基本數(shù)據(jù)類型的默認(rèn)自值。表2-4基本數(shù)據(jù)類型的默認(rèn)值值類型默認(rèn)值decimal/double/float/int/long/short/byte等0或0.0boolFalsechar‘\0’enum0一、認(rèn)識類型3.2.1結(jié)構(gòu)類型C#除了系統(tǒng)的自定義類型外,還包括多種自定義類型,例如結(jié)構(gòu)類型、枚舉類型以及類等。在實(shí)際應(yīng)用中,一組相關(guān)的數(shù)據(jù)可能是相同類型的,也可能是不同類型的。如一個學(xué)生的學(xué)號、姓名、性別和年齡等數(shù)據(jù),它們是相關(guān)的,且往往要作為一個整體來應(yīng)用,這時就需要一種類型來定義一系列相關(guān)的數(shù)據(jù),這種類型就是結(jié)構(gòu)。二、認(rèn)識類型認(rèn)識自定義類型分類結(jié)構(gòu)類型使用關(guān)鍵字struct來定義,聲明結(jié)構(gòu)的語法格式如下,聲明結(jié)構(gòu)后,就可以聲明該結(jié)構(gòu)類型的結(jié)構(gòu)變量了。聲明結(jié)構(gòu)變量的語法格式如下,要訪問結(jié)構(gòu)變量的某個成員,要采用以下格式來完成,二、認(rèn)識類型認(rèn)識自定義類型分類例如,建立一個學(xué)生結(jié)構(gòu)來存儲學(xué)生信息,以下代碼完成對學(xué)生結(jié)構(gòu)的實(shí)現(xiàn)(包含學(xué)號、姓名、年齡和專業(yè)四個元素),在主方法中,完成對上述結(jié)構(gòu)的使用二、認(rèn)識類型認(rèn)識自定義類型分類日常生活中,經(jīng)常要用到一系列相關(guān)的數(shù)據(jù),如1~12月,星期一~星期日等。這些常數(shù)的取值應(yīng)限定在一個合理的范圍內(nèi),且在實(shí)際的編程過程中,這些常數(shù)最好能夠被直觀的詞語進(jìn)行表示,以增加程序的可讀性。在C#中,通過枚舉類型來解決此問題。枚舉類型主要用于表示一個邏輯相關(guān)的項(xiàng)的組合,使用關(guān)鍵字enum來定義,語法格式如下,枚舉實(shí)際上是為一組在邏輯上密不可分的整數(shù)值提供便于記憶的符號。下邊通過建立枚舉類型WeekDay來舉例說明。需要注意的一點(diǎn)是,為枚舉類型的元素所賦的值得類型僅限于long、int、short和byte等整數(shù)類型。二、認(rèn)識類型認(rèn)識自定義類型分類類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對象的集合。創(chuàng)建類的實(shí)例必須使用關(guān)鍵字new來聲明。類和結(jié)構(gòu)之間的根本區(qū)別:結(jié)構(gòu)和值類型,而類是引用類型。對于值類型,每個變量直接包含自身的所有數(shù)據(jù),沒創(chuàng)建一個變量,就在內(nèi)存中開辟一塊區(qū)域;而對于引用類型,每個變量只存儲對目標(biāo)存儲數(shù)據(jù)的引用,每創(chuàng)建一個變量,就增加一個指向目標(biāo)數(shù)據(jù)的引用。關(guān)于類的詳細(xì)內(nèi)容,將在第5章詳細(xì)介紹。二、認(rèn)識類型認(rèn)識自定義類型分類應(yīng)用程序之間要相互調(diào)用,就必須事先達(dá)成一個協(xié)議,被調(diào)用的一方在協(xié)議中對自己所能提供的服務(wù)進(jìn)行描述。在C#中,這個協(xié)議就是接口。接口中對方法的聲明,既不包括訪問修飾符,也不包括方法的執(zhí)行代碼。接口定義的只是一組方法或者一個公共屬性,它必須通過類來實(shí)現(xiàn)。按照慣例,接口的命名以大寫字母“I”開頭。接口的定義如下代碼所示,在定義接口的代碼中,需要注意的是,聲明接口內(nèi)的方法時,不能有訪問修飾符,也不能有方法的具體實(shí)現(xiàn)。第9章將對接口進(jìn)行詳細(xì)的學(xué)習(xí)。二、認(rèn)識類型認(rèn)識自定義類型分類委托是C#中的一種引用類型,是面向?qū)ο?、類型安全的。它主要用?NETFramework中的事件處理和回調(diào)函數(shù)。在使用委托時,可像對待類一樣對待它,也就是先聲明,再實(shí)例化。類在實(shí)例化后稱為對象或?qū)嵗?,而委托在?shí)例化后仍然叫做委托。在C#中,通過關(guān)鍵字delegate來聲明委托,聲明的格式語法如下,下列代碼生命了一個委托MathsOp,這樣任何一個返回值為double,且只有一個double,且只有一個double類型形參的方法都可以用委托MathsOp進(jìn)行調(diào)用。關(guān)于委托的詳細(xì)內(nèi)容將在13章詳細(xì)介紹。二、認(rèn)識類型認(rèn)識自定義類型分類

謝謝——第4章表達(dá)式和運(yùn)算符C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)二、認(rèn)識字面量目錄一、認(rèn)識表達(dá)式三、認(rèn)識運(yùn)算符一、認(rèn)識表達(dá)式C#程序中的可執(zhí)行部分由各種表達(dá)式組成,因此也被稱為表達(dá)式語言。表達(dá)式主要由變量、常量和運(yùn)算符組成。其具體書寫格式如下,操作數(shù)

運(yùn)算符

操作數(shù)其中操作數(shù)包括變量以及字面量,并且操作數(shù)類型相同才可進(jìn)行運(yùn)算,不同時則需進(jìn)行類型轉(zhuǎn)換。類型轉(zhuǎn)換包括隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。其中隱式轉(zhuǎn)換是自動進(jìn)行類型轉(zhuǎn)換,其遵循的總原則是由范圍小可隱式轉(zhuǎn)換為范圍大、精度低可隱式轉(zhuǎn)換為精度高,反之則不行;顯式類型轉(zhuǎn)換又稱為強(qiáng)制類型轉(zhuǎn)換,其書寫格式是:(類型)表達(dá)式。C#表達(dá)式主要包括以下幾種算術(shù)表達(dá)式:用算術(shù)運(yùn)算符連接,結(jié)果是數(shù)值類型關(guān)系表達(dá)式:用關(guān)系運(yùn)算符連接,結(jié)果是布爾類型邏輯表達(dá)式:用邏輯運(yùn)算符連接,結(jié)果是布爾類型賦值表達(dá)式:用賦值運(yùn)算符連接,運(yùn)算結(jié)果的類型取決于賦值運(yùn)算符左側(cè)的運(yùn)算結(jié)果。函數(shù)(方法)調(diào)用表達(dá)式:函數(shù)也稱方法,是可以完成特定功能的程序單位,通過函數(shù)調(diào)用表達(dá)式可以執(zhí)行函數(shù)的特定功能,運(yùn)算的結(jié)果類型取決于函數(shù)的返回值類型。字面量用于表示源代碼中的一個固定值,其可分為數(shù)字型字面量和字符型字面量。例如,想要輸出兩個數(shù)值12,1.628034,則直接將其放入輸出語句:二、認(rèn)識字面量其中的12和43.2即為字面量。其中的12和43.2即為字面量。三、

認(rèn)識運(yùn)算符C#提供了許多運(yùn)算符,這些運(yùn)算符是指定要在表達(dá)式中執(zhí)行哪些操作(數(shù)學(xué)、索引、函數(shù)調(diào)用等等)的符號。三、

認(rèn)識運(yùn)算符算數(shù)運(yùn)算符包括五個常用的簡單運(yùn)算符+、-、*、/、%,并且均為二元運(yùn)算符,其中-、+運(yùn)算符,還可作為一元運(yùn)算符使用,-運(yùn)算符比較常用,對完成對操作數(shù)取負(fù)的操作。表4-1列出了這些運(yùn)算符的用法。表4-1常見運(yùn)算符用法運(yùn)算符類別示例表達(dá)式結(jié)果+二元var1=var2+var3;var1的值是var2與var3的和-二元var1=var2-var3;var1的值是var2對var3的差*二元var1=var2*var3;var1的值是var2與var3的乘積/二元var1=var2/var3;var1的值是var2對var3的商%二元var1=var2%var3;var1的值是var2對var3取余+一元var1=+var2;var1的值等于var2的值-一元var1=-var2;var1的值的值等于var2乘-1其中+運(yùn)算符還有一個擴(kuò)充功能,即字符串的連接,還可自動強(qiáng)制將數(shù)值量轉(zhuǎn)換成字符串。例如,在進(jìn)行上述運(yùn)算時還需注意的的是運(yùn)算順序,比如第二個的運(yùn)算結(jié)果與第三個的運(yùn)算結(jié)果存在差異,=號右邊按照從左到右的順序依次運(yùn)算,第二個式子每一步都是字符串與數(shù)值的預(yù)算,第三個式子前幾步是數(shù)值之間的運(yùn)算,最后一步才完成數(shù)值與字符串的預(yù)算,所以結(jié)果會產(chǎn)生差異。%是取余運(yùn)算符,使用方法為var2%var3,運(yùn)算結(jié)果為var2對var3取得余數(shù),值得注意的是,%的左右操作數(shù)需均為int類型。三、

認(rèn)識運(yùn)算符再介紹另外兩個運(yùn)算符:遞增運(yùn)算符++、遞減運(yùn)算符--,兩者均為一元運(yùn)算符,并且均有兩種使用方式,放在操作數(shù)的前邊(先加一后使用)或者后邊(先使用后加一),其使用方式以及相對應(yīng)的運(yùn)算結(jié)果如表4-2所示。表4-2++、--運(yùn)算符用法運(yùn)算符類別示例表達(dá)式結(jié)果++一元var1=++var2var2遞增1,var1的值為var2+1--一元var1=--var2var2遞減1,var1的值為var2-1++一元var1=var2++var1的值為var2,var2遞增1--一元var1=var2--var1的值為var2,var2遞減1對其用法進(jìn)行舉例說明。此處以++為例,此類運(yùn)算符有很多用途,特別適合在循環(huán)中使用。三、

認(rèn)識運(yùn)算符C#的賦值運(yùn)算符用于將一個數(shù)據(jù)賦予一個變量、屬性或者引用。數(shù)據(jù)可以是常量、變量或者表達(dá)式。賦值運(yùn)算符包括簡單賦值和復(fù)合賦值。其中簡單賦值操作符即“=”,在一個簡單賦值中,右操作數(shù)必須為某種類型的表達(dá)式,且該類型必須可以隱式地轉(zhuǎn)換成左操作數(shù)類型。賦值號“=”的使用方法形如,此時,將數(shù)值2賦值給變量a,而非代表“a等于2”。在C#中,允許對變量連續(xù)賦值,形如,三、

認(rèn)識運(yùn)算符復(fù)合賦值運(yùn)算符為簡單賦值運(yùn)算符與其他運(yùn)算符的組合運(yùn)算符。常用的復(fù)合運(yùn)算符如表4-3所示。表4-3++、--運(yùn)算符用法運(yùn)算符類別示例表達(dá)式結(jié)果+=二元var1+=var2將var1與var2的和賦給var1-=二元var1-=var2將var1與var2的差賦給var1*=二元var1*=var2將var1與var2的乘積賦給var1/=二元var1/=var2將var1與var2的商賦給var1%=二元var1%=var2將var1對var2的余數(shù)賦給var1例如var1+=var2;等效于var1=var1+var2;三、

認(rèn)識運(yùn)算符關(guān)系運(yùn)算符又稱為比較運(yùn)算符,其實(shí)際上是邏輯運(yùn)算的一種,可以將之理解為一種判斷,所得到的結(jié)果為布爾型,即結(jié)果只有兩種可能,“true”或者“false”,C#關(guān)系運(yùn)算符一般包括如表4-4所示的六種。表2-1常用整數(shù)類型運(yùn)算符運(yùn)算符描述==等于!=不等>

大于<

小于>=大于或等于<=小于或等于三、

認(rèn)識運(yùn)算符例如,上述程序執(zhí)行后,if中的條件a<=b成立,所以返回結(jié)果true,并且執(zhí)行if中的語句將1賦值給a。三、

認(rèn)識運(yùn)算符用邏輯運(yùn)算符將關(guān)系表達(dá)式或者布爾表達(dá)式連接起來就組成邏輯表達(dá)式。邏輯表達(dá)式的結(jié)果同樣也是一個布爾值,即結(jié)果為“true”或“false”。表4-5邏輯運(yùn)算符運(yùn)算符運(yùn)算符描述!邏輯非&&邏輯與||邏輯或^邏輯異或三、

認(rèn)識運(yùn)算符!為一元運(yùn)算符,即只需在!符號后邊添加一個操作數(shù),若操作數(shù)為true,則帶有!的邏輯表達(dá)式則為false,反之亦然。&&為二元運(yùn)算符,兩個操作數(shù)中若有一個為false,則整個邏輯表達(dá)式的結(jié)果為false,只有兩個操作數(shù)均為true的話,邏輯表達(dá)式結(jié)果才為true。&&為“短路”運(yùn)算符,即先判斷第一個操作數(shù),若結(jié)果其為true時,才會判斷第二個操作數(shù)的真假,若第一個操作數(shù)的結(jié)果為假,則不會執(zhí)行第二個操作數(shù),因?yàn)榇藭r已能判斷出整個表達(dá)式的結(jié)果為假。||亦為二元運(yùn)算符,兩個操作數(shù)若有一個為true,則整個邏輯表達(dá)式的結(jié)果為true,只有兩個操作數(shù)均為false的話,邏輯表達(dá)式結(jié)果才為false。同樣的,||也是“短路”運(yùn)算符,與&&運(yùn)算符不同的是,若第一個操作數(shù)的結(jié)果為false時,才會判斷第二個操作數(shù),若第一個操作數(shù)的結(jié)果為真,則不會執(zhí)行第二個操作數(shù)。^為二元運(yùn)算符,若兩個操作數(shù)的結(jié)果均為true或者均為false時,整個邏輯表達(dá)式的結(jié)果為false,若兩個操作數(shù)一個為true,一個為false,則整個表達(dá)式的結(jié)果為false。三、

認(rèn)識運(yùn)算符在C#中可以對整型運(yùn)算對象按位進(jìn)行邏輯運(yùn)算。按位進(jìn)行邏輯運(yùn)算的意義是:依次取被運(yùn)算對象的每個位,進(jìn)行邏輯運(yùn)算,每個位的邏輯運(yùn)算結(jié)果是結(jié)果值的每個位。C#支持的位邏輯運(yùn)算符如表4-6所示。表4-6位運(yùn)算符運(yùn)算符描述運(yùn)算對象結(jié)果類型運(yùn)算對象數(shù)實(shí)例~按位取反整型、字符型整型1~a&按位與運(yùn)算2a&b|按位或運(yùn)算2a|b^按位異或運(yùn)算2a^b<<

位左移運(yùn)算2a<<4>>

位右移運(yùn)算2a>>3三、

認(rèn)識運(yùn)算符(1)按位取反運(yùn)算符~按位取反運(yùn)算符是單目的,只有一個運(yùn)算對象,其按位對運(yùn)算對象的值進(jìn)行取反運(yùn)算,即:如果某一位等于0,就將其轉(zhuǎn)變?yōu)?;如果某一位等于1,就將其轉(zhuǎn)變?yōu)?。比如,對二進(jìn)制的10010001進(jìn)行按位取反運(yùn)算,結(jié)果等于01101110,用十進(jìn)制表示就是:~145等于110;對二進(jìn)制的01010101進(jìn)行按位取反運(yùn)算,結(jié)果等于10101010。用十進(jìn)制表示就是~85等于176。(2)按位與運(yùn)算符&按位與運(yùn)算符將兩個運(yùn)算對象按位進(jìn)行與運(yùn)算。與運(yùn)算的規(guī)則:1與1等于1,1與0等于0,0與0等于0。比如:10010001(二進(jìn)制)&11110000等于10010000(二進(jìn)制)。(3)按位或運(yùn)算符|按位或運(yùn)算符將兩個運(yùn)算對象按位進(jìn)行或運(yùn)算?;蜻\(yùn)算的規(guī)則是:1或1等1,1或0等于1,0或0等于0。比如10010001(二進(jìn)制)|11110000(二進(jìn)制)等于11110001(二進(jìn)制)。三、

認(rèn)識運(yùn)算符(4)按位異或運(yùn)算符^按位異或運(yùn)算符將兩個運(yùn)算對象按位進(jìn)行異或運(yùn)算。異或運(yùn)算的規(guī)則是:1異或1等于0,1異或0等于1,0異或0等于0。即:相同得0,相異得1。比如:10010001(二進(jìn)制)^11110000(二進(jìn)制)等于01100001(二進(jìn)制)。(5)位左移運(yùn)算符<<位左移運(yùn)算符將整個數(shù)按位左移若干位,左移后空出的部分0。比如:8位的byte型變量bytea=0x65(即二進(jìn)制的01100101),將其左移3位:a<<3的結(jié)果是0x27(即二進(jìn)制的00101000)(6)位右移運(yùn)算符>>位右移運(yùn)算符將整個數(shù)按位右移若干位,右移后空出的部分填0。比如:8位的byte型變量bytea=0x65(即二進(jìn)制的01100101))將其右移3位:a>>3的結(jié)果是0x0c(二進(jìn)制00001100)。三、

認(rèn)識運(yùn)算符?:為條件運(yùn)算符,其書寫格式為:表達(dá)式1?表達(dá)式2:表達(dá)式3。其中表達(dá)式1的結(jié)果必須為bool型。該條件表達(dá)式的運(yùn)行順序是:先求解表達(dá)式1,若為真則求解表達(dá)式2,此時表達(dá)式2的值就作為整個表達(dá)式的值。若表達(dá)式1的值為假,則求解表達(dá)式3,表達(dá)式3的值就是整個條件表達(dá)式的值。例如,上述表達(dá)式中a>b的運(yùn)行結(jié)果為true,所以執(zhí)行?后的第一個式子,最終結(jié)果將1賦給a。三、

認(rèn)識運(yùn)算符typeof是一元運(yùn)算符,用于返回任意一個類型的類型信息,typeof運(yùn)算符的語法如下:Typetype=typeof(類型)當(dāng)使用反射動態(tài)查找對象的信息時,使用這個運(yùn)算符很有效。并且typeof運(yùn)算符不能重載。可通過如下示例對typeof運(yùn)算符進(jìn)行更進(jìn)一步的理解,三、

認(rèn)識運(yùn)算符三、

認(rèn)識運(yùn)算符運(yùn)行結(jié)果:int類型的對象是:System.Int32uint類型的對象是:System.UInt32double類型的對象是:System.Doublebool類型的對象是:System.Booleanchar類型的對象是:System.Charbyte類型的對象是:System.Bytesbyte類型的對象是:System.Sbyte三、

認(rèn)識運(yùn)算符計(jì)算表達(dá)式時,會按照順序處理每個運(yùn)算符,但這并不意味著按照行為習(xí)慣全部從左到右地運(yùn)用這些運(yùn)算符,例如:此段代碼的運(yùn)算順序?yàn)橄扔?jì)算var2+var3,之后再將它的和賦給var1,而并非按照從左到右的順序執(zhí)行。再例如,首先運(yùn)行var3*var4,之后將其結(jié)果與var2相加,將最后的值賦給var1。若想認(rèn)為影響其運(yùn)行順序的話,需對其進(jìn)行加()處理,例如,需先計(jì)算括號內(nèi)的加法,之后再講和與var4相乘。三、

認(rèn)識運(yùn)算符運(yùn)算符的優(yōu)先級一般按照表執(zhí)行。優(yōu)先級類別運(yùn)算符高

基本x.y、typeof、new一元++、--、+、-、*、/、位移<<、>>關(guān)系運(yùn)算符<、>、>=、<=、is、as相等==、!=邏輯&、|、^條件&&、||三元?:賦值=、+=、-=、*=、/=三、

認(rèn)識運(yùn)算符

謝謝——第5章

掌握類的基本概念C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)二、認(rèn)識類的成員目錄一、編寫簡單類三、認(rèn)識分部定義四、認(rèn)識堆與棧

類是對象概念在面向?qū)ο缶幊陶Z言中的反映,是相同對象的集合。類描述了一系列在概念上有相同含義的對象,并為這些對象統(tǒng)一定義了編程語言上的屬性和方法。類是C#中功能最為強(qiáng)大的數(shù)據(jù)類型,像結(jié)構(gòu)一樣,類也定義了數(shù)據(jù)類型的數(shù)據(jù)和行為。然后,程序開發(fā)人員可以創(chuàng)建作為此類的實(shí)例對象。與結(jié)構(gòu)不同,類支持繼承,而繼承是面向?qū)ο缶幊痰幕A(chǔ)部分。一、編寫簡單類

在使用任何新的類之前都必須聲明它,一個類一旦被聲明,就可以當(dāng)作一種新的類型來使用了。類的聲明格式如下:【類修飾符】class【類名】【基類或接口】{【類體】}一、編寫簡單類一、編寫簡單類編寫簡單的計(jì)算器類

在C#中,通常通過關(guān)鍵字class來聲明一個類。通常類的聲明會使用class關(guān)鍵字,后面緊跟著是類的名字Calculator。大括號中是類中的成員,其中定義了兩個int型的變量x和y,他們的屬性被定義為private。

還定義了getx()、setx(intx)、gety()、sety(inty)、jia(int

x,int

y)、jian(int

x,int

y)、cheng(int

x,int

y)、chu(int

x,int

y)八個函數(shù),他們的屬性被定義為了public。x和y這兩個變量用于存儲進(jìn)行運(yùn)算中的操作數(shù),類內(nèi)的函數(shù)用于寫入和讀取操作數(shù)的值和對操作數(shù)進(jìn)行簡單的四則運(yùn)算并輸出結(jié)果。一、編寫簡單類一、編寫簡單類使用計(jì)算器類

在面向?qū)ο笾?,算法與數(shù)據(jù)結(jié)構(gòu)被看做一個整體,稱為對象?,F(xiàn)實(shí)世界中任何類的對象都具有一定的屬性和操作,也總能用數(shù)據(jù)結(jié)構(gòu)與算法兩者合而為一來描述,所以可以用下面的等式來定義對象和程序。對象=(算法+數(shù)據(jù)結(jié)構(gòu)),程序=(對象+對象+......)。

字段、屬性和方法都是C#程序中重要的組成部分。其中,字段存儲類要滿足其設(shè)計(jì)所需要的數(shù)據(jù),屬性提供靈活的機(jī)制來讀取、編寫或計(jì)算私有字段的值,而方法則以一部分構(gòu)成代碼塊的形式存在,用來實(shí)現(xiàn)這一部分特定的功能。這一節(jié)通過上一節(jié)編寫的計(jì)算器類,來學(xué)習(xí)和掌握怎樣定義和使用這些類成員。二、認(rèn)識類的成員二、認(rèn)識類的成員認(rèn)識字段

字段,它是包含在類或結(jié)構(gòu)中的對象或值。字段使類和結(jié)構(gòu)可以封裝數(shù)據(jù)。例如,一個立方體的長、寬、高,一輛汽車的速度、排氣量、載重量我們都可以抽象為相應(yīng)類中的字段。

可以看到,為了簡單起見,可以把字段的屬性修改為public,從而訪問這兩字段。但是不建議這樣做。字段通常應(yīng)為

private。外部類應(yīng)當(dāng)通過方法、屬性或索引器來間接訪問字段。我們會在后面的章節(jié)進(jìn)行介紹。想要訪問對象中的字段,可以通過在對象名稱后面依次添加一個點(diǎn)和該字段的名稱來實(shí)現(xiàn)的,具體的形式如下:【對象名】.【字段名】二、認(rèn)識類的成員二、認(rèn)識類的成員認(rèn)識屬性

屬性是一種用于訪問對象或類的特性的成員。屬性可以包括字符串的長度、字體的大小、窗體的標(biāo)題和客戶的名稱等。屬性是成員的自然擴(kuò)展,兩者都是關(guān)聯(lián)類型的命名成員。

屬性有訪問器,這些訪問器指定在它們的值被讀取或者寫入時需要執(zhí)行的語句。因此屬性提供了一種機(jī)制,它把讀取和寫入對象的某些特性與一些操作關(guān)聯(lián)起來??梢韵袷褂霉袛?shù)據(jù)成員一樣使用屬性,但實(shí)際上它們是稱為“訪問器”的特殊方法。這使得數(shù)據(jù)在可被輕松訪問的同時,仍能提供方法的安全性和靈活性。二、認(rèn)識類的成員屬性具有以下特點(diǎn):屬性可以向程序中添加元數(shù)據(jù)。元數(shù)據(jù)是嵌入程序中的信息,如編譯器指令或數(shù)據(jù)描述。程序可以使用反射檢查自己的元數(shù)據(jù)。通常使用屬性與COM交互。二、認(rèn)識類的成員二、認(rèn)識類的成員認(rèn)識方法方法是包含一系列語句的代碼塊。在C#中,每個執(zhí)行指令都是在方法的上下問中完成的。方法的聲明格式如下:【修飾符】【方法名】(參數(shù)列表){...【返回值】}

方法聲明可以包含一組特性和private、public、protected、internal4個訪問修飾符的任何一個有效組合,還可以包含new、static、virtual、override、sealed、abstract以及extern等修飾符。一個方法的名稱和形參列表定義了該方法的簽名。具體的江,一個方法的簽名由它的名稱以及它的形參個數(shù)、修飾符和類型組成。返回類型不是方法簽名的組成部分,形參的名稱也不是方法簽名的組成部分。一個方法的返回類型和它的形參列表中所引用的各個類型必須至少具有該方法本身相同的可訪問性。二、認(rèn)識類的成員三、認(rèn)識分部定義定義分部類

分部定義就是可以將類、結(jié)構(gòu)或接口的定義拆分到兩個或多個源文件中。每個源文件包含類定義的一部分,編譯應(yīng)用程序時將把所有部分組合起來。如果需要拆分類的定義的話,需要使用partial關(guān)鍵字。三、認(rèn)識分部定義

分部類的應(yīng)用還會存在許多限制。既處理分部類定義時需遵循下面的幾個規(guī)則:要作為同一類型的各個部分的所有分部類型定義都必須使用partial進(jìn)行修飾。partial修飾符只能出現(xiàn)在緊靠關(guān)鍵字class、struct或interface前面的位置。分部類型定義中允許使用嵌套的分部類型。要成為同一類型的各個部分的所有分部類型定義都必須在同一程序集和同一模塊(.exe或.dll文件)中進(jìn)行定義。分部定義不能跨越多個模塊。三、認(rèn)識分部定義

類名和泛型類型參數(shù)在所有的分部類型定義中都必須匹配。泛型類型可以是分部的。每個分部聲明都必須以相同的順序使用相同的參數(shù)名。用于分部類型定義中的有些關(guān)鍵字是可選的,但是如果某關(guān)鍵字出現(xiàn)在一個分部類型定義中,則該關(guān)鍵字不能與在同一類型的其他分部定義中指定的關(guān)鍵字沖突。這些關(guān)鍵包括:public、private、protected、internal、abstract、sealed、基類、new修飾符(嵌套部分)與一般約束三、認(rèn)識分部定義定義分方法同分部類類似,C#中還支持我們定義分部方法。分部方法的定義也需要partial關(guān)鍵字。分布方法允許將方法聲明與方法實(shí)現(xiàn)代碼分布于不同的文件中。三、認(rèn)識分部定義定義分部方法需要遵守許多規(guī)則:C#分部方法必須是私有的,不能返回值。分布方法不能具有訪問修飾符或virtual、abstract、override、new、sealed或者extern修飾符。當(dāng)分部方法沒有實(shí)現(xiàn)代碼時,C#編譯器會在編譯時刪除其調(diào)用語句。使用分部方法允許我們在一個普通方法中插入一個方法占位符,從而為編寫可隨時添加功能的方法提供支持。分部方法不能有多個實(shí)現(xiàn)。四、認(rèn)識堆與棧

使用.Net框架開發(fā)程序的時候,我們無需關(guān)心內(nèi)存分配問題,因?yàn)橛蠫C(Garbagecollection:垃圾收集器)這個大管家給我們料理一切。但有時我們會想內(nèi)存中是如何存放,生命周期又如何?要想釋疑以上問題,我們就應(yīng)該對.Net下的棧(Stack)和托管堆(Heap)(簡稱堆)有個清楚認(rèn)識。認(rèn)識堆和棧是提高程序性能多必須的。C#程序在CLR上運(yùn)行的時候,內(nèi)存從邏輯上劃分兩大塊:棧,堆。這倆基本元素組成我們C#程序的運(yùn)行環(huán)境。四、認(rèn)識堆與棧認(rèn)識棧

棧(stack),它是一種運(yùn)算受限的線性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向一個棧插入新元素又稱作進(jìn)棧、入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個棧刪除元素又稱作出?;蛲藯?,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。四、認(rèn)識堆與棧棧結(jié)構(gòu)圖四、認(rèn)識堆與棧認(rèn)識堆

與棧不相同,堆上存放的則多是對象,數(shù)據(jù)等。堆像是一個倉庫,儲存著待使用的各種對象等信息,跟棧不同的是他們被調(diào)用完畢不會立即被清理掉。而堆需要GC(Garbagecollection:垃圾收集器)清理。四、認(rèn)識堆與棧堆結(jié)構(gòu)圖

謝謝C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)——第6章

使用類的方法二、認(rèn)識參數(shù)目錄一、編寫控制語句三、認(rèn)識返回四、方法重載五、認(rèn)識遞歸

語句是完成一次完整操作的基本單位。默認(rèn)情況下,程序的語句是順序執(zhí)行的。但是,如果一個程序只有順序執(zhí)行的語句。但是,如果一個程序只有順序執(zhí)行的語句,那么程序可能什么也做不了。在C#中很多語句,通過這些語句可以控制程序代碼的執(zhí)行次序,提高程序的靈活性,從而實(shí)現(xiàn)比較復(fù)雜的程序。一、編寫控制語句一、編寫控制語句編寫if語句if語句會根據(jù)一個布爾表達(dá)式的值選擇一條語句來執(zhí)行,其基本的格式如下:if(布爾表達(dá)式){【語句塊】}

除了上述基本格式外,if語句還有另外一種格式,其基本形式如下:if(布爾表達(dá)式){【語句塊】}else{【語句塊】}一、編寫控制語句一、編寫控制語句編寫switch語句

switch語句是多分支選擇語句,它根據(jù)表達(dá)式的值來使程序從多個分之中選擇一個用于執(zhí)行的分支。switch語句的基本格式如下。switch(【表達(dá)式】){case【常量表達(dá)式】:【語句塊】break;case【常量表達(dá)式】:【語句塊】break;case【常量表達(dá)式】:【語句塊】break;...defualt:【語句塊】break;}一、編寫控制語句一、編寫控制語句編寫while語句

while語句用于根據(jù)條件值執(zhí)行一條語句零次或者多次,當(dāng)每次while語句中的代碼執(zhí)行完畢時,將重新查看是否符合條件值,若符合則再次執(zhí)行相同的程序代碼;否則跳出while語句,執(zhí)行其他程序代碼。while語句的基本格式如下:while(【布爾表達(dá)式】){【語句塊】}一、編寫控制語句編寫do...while語句do...while語句與while語句相似,它的判斷條件在循環(huán)后。do...while循環(huán)在計(jì)算條件表達(dá)式之前執(zhí)行一次,其基本的形式如下:do{【語句塊】}while(【布爾表達(dá)式】)一、編寫控制語句編寫for語句

for語句用于計(jì)算一個初始化序列,然后當(dāng)某個條件為真時,重復(fù)執(zhí)行嵌套語句并計(jì)算第一個迭代表達(dá)序列。如果為假則終止循環(huán),退出for循環(huán)。for語句的基本形式如下:for(【初始化表達(dá)式】;【條件表達(dá)式】;【迭代表達(dá)式】){【語句塊】}一、編寫控制語句編寫break語句

break語句只能應(yīng)用在switch、while、do...while、for語句中,break語句含在這幾種語句中,否則會出現(xiàn)編譯錯誤。當(dāng)多條switch、while、do...while、for語句中相互嵌套時,break語句只應(yīng)用與最里層的語句。如果要穿越多個嵌套層,則必須使用goto語句。一、編寫控制語句編寫goto語句

goto語句用于將控制轉(zhuǎn)移到由標(biāo)簽標(biāo)記的語句。goto語句可以被應(yīng)用在switch語句中的case標(biāo)簽和default標(biāo)簽,以及標(biāo)記語句聲明的標(biāo)簽。goto語句的3種形式如下:goto【標(biāo)簽】gotocase【參數(shù)表達(dá)式】gotodefault二、認(rèn)識參數(shù)認(rèn)識形參和實(shí)參通常所稱的形參,也就是形式參數(shù),指的是在定義方法中指定的參數(shù)在未出現(xiàn)函數(shù)調(diào)用時,他們并不占內(nèi)存中的存儲單元,只有在發(fā)生函數(shù)調(diào)用時,函數(shù)中的形參才被分配內(nèi)存單元。在調(diào)用結(jié)束后,形參所占的內(nèi)存單元也被釋放。實(shí)參可以是常量、變量和表達(dá)式,但要求有確定的值。在調(diào)用時將實(shí)參的值賦給形參。在內(nèi)存中,實(shí)參單元和形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實(shí)參對應(yīng)的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實(shí)參單元仍保留原值。二、認(rèn)識參數(shù)認(rèn)識引用參數(shù)通常說的引用參數(shù)就是以ref修飾符聲明。傳遞的參數(shù)實(shí)際上是實(shí)參的指針,所以在方法中的操作都是直接對實(shí)參進(jìn)行的,而不是復(fù)制一個值;可以利用這個方式在方法調(diào)用時雙向傳遞參數(shù);為了以ref方式使用參數(shù),必須在方法聲明和方法調(diào)用中都明確地指定ref關(guān)鍵字,并且實(shí)參變量在傳遞給方法前必須進(jìn)行初始化。ref關(guān)鍵字使參數(shù)按引用傳遞。其效果是,當(dāng)控制權(quán)傳遞回調(diào)用方法時,在方法中對參數(shù)所做的任何更改都將反映在該變量中。二、認(rèn)識參數(shù)認(rèn)識輸出參數(shù)

out關(guān)鍵字會導(dǎo)致參數(shù)通過引用來傳遞。這與ref關(guān)鍵字類似。

但又與ref的不同之處:ref要求變量必須在傳遞之前進(jìn)行初始化,out參數(shù)傳遞的變量不需要在傳遞之前進(jìn)行初始化。盡管作為out參數(shù)傳遞的變量不需要在傳遞之前進(jìn)行初始化,但需要在調(diào)用方法初始化以便在方法返回之前賦值。二、認(rèn)識參數(shù)識參數(shù)數(shù)組參數(shù)數(shù)組,通過關(guān)鍵字params定義參數(shù)數(shù)組,paras類型參數(shù)主要用于在對數(shù)組長度未知(可變)的情況下進(jìn)行方法聲明,調(diào)用時可以傳入個數(shù)不同的實(shí)參,具備很好的靈活性。二、認(rèn)識參數(shù)認(rèn)識命名參數(shù)命名參數(shù)是把參數(shù)附上參數(shù)名稱,這樣在調(diào)用方法的時候不必按照原來的參數(shù)順序填寫參數(shù),只需要對應(yīng)好參數(shù)的名稱也能完成方法。在調(diào)用時其格式如下:對象名.方法名(形參1:實(shí)參1,形參2:實(shí)參2,形參3:實(shí)參3...)二、認(rèn)識參數(shù)認(rèn)識可選參數(shù)

可選參數(shù),是指給方法的特定參數(shù)指定默認(rèn)值,在調(diào)用方法時可以省略掉這些參數(shù)。應(yīng)用可選參數(shù)的方法在被調(diào)用的時可以選擇性的添加需要的參數(shù),但是在使用可選參數(shù)時需要注意以下幾點(diǎn):可選參數(shù)不能為參數(shù)列表的第1個參數(shù),必須位于所有的必選參數(shù)之后(除非沒有必選參數(shù))。可選參數(shù)必須指定一個默認(rèn)值,且默認(rèn)值必須是一個常量表達(dá)式,不能為變量。所有可選參數(shù)以后的參數(shù)都必須是可選參數(shù)。三、認(rèn)識返回使用returnreturn語句用于退出類的方法,是控制返回方法的調(diào)用者。如果方法有返回類型,return語句必須返回這個類型的值;如果方法沒有返回類型,應(yīng)使用沒有表達(dá)式的return語句。

三、認(rèn)識返回返回值類型和void

與變量一樣,返回值也有數(shù)據(jù)類型。當(dāng)方法返回一個值時,可以采取一下兩種方式修改方法:在方法聲明中指定返回值的類型,但不適用void關(guān)鍵字使用return關(guān)鍵字結(jié)束方法的執(zhí)行,把返回值傳遞給調(diào)用代碼。

使用return關(guān)鍵字結(jié)束方法的執(zhí)行,把返回值傳遞給調(diào)用代碼。在執(zhí)行到return語句時,程序會立即返回調(diào)用代碼。這個語句后面的代碼都不會執(zhí)行。但是,這并不意味著return語句只能放在方法的最后一行。可以在前面的代碼里使用return,也可能在執(zhí)行了分支邏輯之后使用。把return語句放在for循環(huán)、if塊或者其他結(jié)構(gòu)中會使該結(jié)構(gòu)立即終止,方法也立即終止。

四、方法重載

方法重載是指調(diào)用同一方法名,但各方法中參數(shù)的數(shù)據(jù)類型、個數(shù)或順序不同。只要在類中有兩個以上的同名方法,但是使用的參數(shù)類型、個數(shù)或順序不同,調(diào)用時,編譯器即可判斷在哪種情況下調(diào)用哪種方法。

四、方法重載理解方法簽名

方法簽名由方法名稱和一個參數(shù)列表(方法的參數(shù)順序和類型)組成。

但是方法的簽名并不包括方法的返回值。雖然每個重載方法可以有不同的返回類型,單返回類型并不足以區(qū)分所條用的是哪個方法。

當(dāng)一個方法被調(diào)用時,C#用方法簽名確定調(diào)用哪一個方法。因此,每個重載方法的參數(shù)列表必須是不同的。雖然每個重載方法可以有不同的返回類型,單返回類型并不足以區(qū)分所條用的是哪個方法。當(dāng)C#調(diào)用一個重載方法時,參數(shù)與條用參數(shù)相匹配的方法被執(zhí)行。

五、認(rèn)識遞歸

在調(diào)用一個方法的過程中又出現(xiàn)直接或間接調(diào)用該方法本身,稱為方法的遞歸調(diào)用。

直接調(diào)用本方法間接調(diào)用本方法

謝謝——第7章掌握類的高級概念C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)二、使用析構(gòu)函數(shù)目錄一、構(gòu)造函數(shù)三、使用this關(guān)鍵字四、使用屬性六、使用靜態(tài)目錄五、使用索引器七、認(rèn)識常量八、使用命名空間十、使用using目錄九、垃圾回收

構(gòu)造函數(shù)(constructor)是一種特殊的方法。主要用來在創(chuàng)建對象時初始化對象,即為對象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對象的語句中。特別的一個類可以有多個構(gòu)造函數(shù),可根據(jù)其參數(shù)個數(shù)的不同或參數(shù)類型的不同來區(qū)分它們,即構(gòu)造函數(shù)的重載。

構(gòu)造函數(shù)聲明的基本形式如下:[修飾符]類名([參數(shù)列表]){構(gòu)造函數(shù)方法體}一、構(gòu)造函數(shù)

構(gòu)造函數(shù)具有下列特征1)構(gòu)造函數(shù)的名稱與類名相同2)可以創(chuàng)建多個構(gòu)造函數(shù),以根據(jù)不同的參數(shù)列表進(jìn)行相應(yīng)的初始化3)構(gòu)造函數(shù)不能聲明返回類型(也不能使用void),也不能返回值4)一般構(gòu)造函數(shù)總是public類型的。private類型的構(gòu)造函數(shù)表明類不能被實(shí)例化,通常用于只含有靜態(tài)成員的類5)創(chuàng)建對象時,自動調(diào)用對應(yīng)的構(gòu)造函數(shù),不能顯式調(diào)用構(gòu)造函數(shù)6)在構(gòu)造函數(shù)中不要做對類的實(shí)例進(jìn)行初始化以外的事情一、構(gòu)造函數(shù)【例7-1】類Person沒有任何構(gòu)造函數(shù);在這種情況下,將自動提供默認(rèn)構(gòu)造函數(shù),同時將字段初始化為它們的默認(rèn)值?!纠?-2】使用帶參數(shù)的構(gòu)造函數(shù)一、構(gòu)造函數(shù)析構(gòu)函數(shù)(destructor)用于實(shí)現(xiàn)銷毀類的實(shí)例所需的操作,如釋放對象占用的非托管資源(例如:打開的文件、網(wǎng)絡(luò)連接等)析構(gòu)函數(shù)聲明的基本形式如下:~類名(){析構(gòu)函數(shù)方法體}[;]二、使用析構(gòu)函數(shù)

析構(gòu)函數(shù)具有下列特征:1)析構(gòu)函數(shù)的名稱由類名前面加上“~”字符構(gòu)成2)析構(gòu)函數(shù)既沒有修飾符,沒有返回值類型(甚至也不能使用void),也沒有參數(shù)3)無法繼承或重載析構(gòu)函數(shù),一個類只能有一個析構(gòu)函數(shù)4)不能顯式調(diào)用析構(gòu)函數(shù)5)可以認(rèn)為析構(gòu)函數(shù)是構(gòu)造函數(shù)的相反操作6)析構(gòu)函數(shù)隱式地調(diào)用對象基類的Finalize(終結(jié))方法,即對繼承鏈遞歸調(diào)用Finalize方法。故不應(yīng)使用空析構(gòu)函數(shù)【例7-3】使用析構(gòu)函數(shù)二、析構(gòu)函數(shù)this關(guān)鍵字引用類的當(dāng)前實(shí)例。靜態(tài)成員方法中不能使用this關(guān)鍵字。this關(guān)鍵字只能在實(shí)例構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗L問器中使用【例7-5】訪問關(guān)鍵字this示例。三、使用this關(guān)鍵字屬性的聲明:[屬性修飾符]類型屬性名

{

[get{get訪問器體}][set{set訪問器體}]

}[;]屬性的訪問:對象.屬性名C#中的屬性通過get和set訪問器來對屬性的值進(jìn)行讀寫【例7-8】索引器訪問各個圓四、使用屬性自動實(shí)現(xiàn)的屬性聲明的基本形式如下:[屬性修飾符]類型屬性名{get;set;}[;]當(dāng)聲明自動實(shí)現(xiàn)的屬性時,編譯器將創(chuàng)建一個私有的匿名后備字段,該字段只能通過屬性的get和set訪問器進(jìn)行訪問?!纠?-7】屬性的綜合應(yīng)用四、使用屬性

索引器提供了一種訪問類或結(jié)構(gòu)的方法,即允許按照與數(shù)組相同的方式對類、結(jié)構(gòu)或接口進(jìn)行索引。它的引入是為了使程序更加直觀、易于理解。例如,可以有一個圓類Circle,其中有一個R數(shù)組字段可能包含各個圓的半價,circle是該類的一個對象,類中索引器允許訪問這些圓的半價,例如:circle[0]=1;circle[1]=2;circle[2]=3;五、使用索引器索引器聲明的基本形式為:[修飾符]類型

this[參數(shù)表]

{[get{get訪問器體

}][set{set訪問器體

}]}[;]【例7-8】索引器訪問各個圓五、使用索引器C#并不將索引類型限制為整數(shù)。例如,可以對索引器使用字符串。通過搜索集合內(nèi)的字符串并返回相應(yīng)的值,可以實(shí)現(xiàn)此類的索引器。由于訪問器可被重載,字符串和整數(shù)版本可以共存?!纠?-10】滿足多種不同的查詢方式?!纠?-11】定義一個多維索引器,完成索引電影院的一個放映室的座位號。第一排第一列為1號,第一排第二列為2號……五、使用索引器靜態(tài)字段是類中所有對象共享的成員,而不是某個對象的成員,也就是說靜態(tài)字段的存儲空間不是放在每個對象中,而是和方法一樣放在類公共區(qū)中。對靜態(tài)字段的操作和一般字段一樣,定義為私有的靜態(tài)字段不能被外界訪問。靜態(tài)字段的使用方法如下:(1)靜態(tài)字段的定義與一般字段相似,但前面要加上static關(guān)鍵詞。(2)在訪問靜態(tài)字段時采用如下格式:類名.靜態(tài)字段名【例7-12】靜態(tài)成員與非靜態(tài)成員的區(qū)別

六、使用靜態(tài)靜態(tài)構(gòu)造函數(shù)用于實(shí)現(xiàn)初始化類(而不是初始化實(shí)例或?qū)ο螅┧璧牟僮?。靜態(tài)構(gòu)造函數(shù)用于初始化任何靜態(tài)數(shù)據(jù),或用于執(zhí)行僅需執(zhí)行一次的特定操作。在創(chuàng)建第一個實(shí)例或引用任何靜態(tài)成員之前,將自動調(diào)用靜態(tài)構(gòu)造函數(shù)。類的靜態(tài)構(gòu)造函數(shù)在給定程序中至多執(zhí)行一次。靜態(tài)構(gòu)造函數(shù)聲明的基本形式如下:static

類名(){構(gòu)造函數(shù)方法體}[;]靜態(tài)構(gòu)造函數(shù)既沒有訪問修飾符,也沒有參數(shù)在創(chuàng)建第一個實(shí)例或引用任何靜態(tài)成員之前,自動調(diào)用靜態(tài)構(gòu)造函數(shù)

六、使用靜態(tài)常量(constant)是在編譯時設(shè)置其值并且永遠(yuǎn)不能更改其值的字段。常量是表示常量值的類成員,常量的值在編譯時計(jì)算常量的聲明:[修飾符]const類型

字段名=初始化;常量是靜態(tài)成員,但聲明常量時既不要求也不允許使用static修飾符。只讀字段只能在聲明字段時賦值或在類的構(gòu)造函數(shù)內(nèi)被賦值,在其他位置,只讀字段的值不能更改。只讀字段的聲明:

[修飾符]readonly類型

字段名[=初始化];七、認(rèn)識常量

只讀字段與常量的區(qū)別常量只能在聲明時賦值,常量的值在編譯時就已經(jīng)確定,在程序中不能改變。只讀字段可以在聲明時或者在構(gòu)造函數(shù)內(nèi)賦值,只讀字段的值是在運(yùn)行時確定的。常量的類型只能是下列類型之一:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string或者枚舉類型;而只讀變量可以是任何類型。【例7-14】要求定義一個類,在該類中定義一個描述國籍的常量,其常量值為“中國”,定義一個描述姓名的readonly字段,并在該類的構(gòu)造方法中初始化其值。七、認(rèn)識常量

在.NET中,類是通過命名空間(namespace)來組織的。命名空間提供了可以將類分成邏輯組的方法,將系統(tǒng)中的大量類庫有序地組織起來,使得類更容易使用和管理。可以將命名空間想像成文件夾,類的文件夾就是命名空間,不同的命名空間內(nèi),可以定義許多類。在每個命名空間下,所有的類都是“獨(dú)立”且“唯一”的。八、使用命名空間

在c#中,當(dāng)一個對象成為垃圾對象后仍會占用內(nèi)存空間,時間一長,就會導(dǎo)致內(nèi)存空間的不足。為了清楚這些無用的垃圾對象,釋放一定的內(nèi)存空間,c#中引入了垃圾回收機(jī)制。在這種機(jī)制下,程序員不需要過多關(guān)心垃圾對象回收的問題,.Net運(yùn)行環(huán)境會啟動垃圾回收器將這些垃圾對象從內(nèi)存中釋放,從而使程序獲得更多可用的內(nèi)存空間。除了等待運(yùn)行環(huán)境自動垃圾回收,還可以通過調(diào)用GC.Collect()方法來通知運(yùn)行環(huán)境立即進(jìn)行垃圾回收?!纠?-15】垃圾回收

九、垃圾回收

在.NET中有一個至關(guān)重要的關(guān)鍵字,那就是using。using關(guān)鍵字的主要有3個作用:引入命名空間創(chuàng)建別名強(qiáng)制資源清理十、使用using語句

直接定位在應(yīng)用程序中,任何一個命名空間都可以在代碼中直接使用。例如:

System.Console.WriteLine("ABC");

這個語句是調(diào)用了System命名空間中Console類的WriteLine方法。十、使用using語句

在應(yīng)用程序中要使用一個命名空間,還可以采取引用命名空間的方法,在引用后,應(yīng)用程序中就可使用該命名空間內(nèi)的任一個類了。引用命名空間的方法是利用using關(guān)鍵字,其使用格式如下:

using[別名=]命名空間或

using[別名=]命名空間.成員十、使用using語句using語句被翻譯成三個部分:獲取、使用和處置。資源的使用部分被隱式封閉在一個含有finally子句的try語句中,此finally子句用于處置資源。如果所獲取資源是null,則不會對Dispose進(jìn)行調(diào)用,也不會引發(fā)任何異常。十、使用using語句try-catch-finally一起使用的常見方式是:在try塊中獲取并使用資源,在catch塊中處理異常情況,并在finally塊中釋放資源。因此using和try-catch-finally語句都可以達(dá)到釋放資源的目的,但是兩者也有不同點(diǎn)。1、try-catch-finally可以用來捕獲異常并處理,using不行;2、using可以創(chuàng)建別名,導(dǎo)入命名空間,try-catch-finally不行;3、using會在資源超出范圍后主動釋放對象,try-catch-finally要程序員自己寫釋放對象的代碼十、使用using語句

謝謝——第8章掌握類的繼承C#面向?qū)ο蟪绦蛟O(shè)計(jì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)二、認(rèn)識訪問規(guī)則目錄一、掌握類的繼承三、認(rèn)識重寫四、認(rèn)識抽象類六、認(rèn)識擴(kuò)展方法目錄五、認(rèn)識密封類七、認(rèn)識克隆繼承允許重用現(xiàn)有類(基類,亦稱超類、父類)去創(chuàng)建新類(子類,亦稱派生類)的過程。子類將獲取基類的所有非私有數(shù)據(jù)和行為,子類可以定義其他數(shù)據(jù)或行為。派生類具有基類的所有非私有數(shù)據(jù)和行為以及新類自己定義的所有其他數(shù)據(jù)或行為,即子類具有兩個有效類型:子類的類型和它繼承的基類的類型。

實(shí)現(xiàn)繼承表示一個類型派生于一個基類型,派生類具有基類的所有非私有(非private)數(shù)據(jù)和行為。在實(shí)現(xiàn)繼承中,派生類型的每個方法采用基類型的實(shí)現(xiàn)代碼,除非在派生類型的定義中指定重寫該方法的實(shí)現(xiàn)代碼。實(shí)現(xiàn)繼承一般用于增加現(xiàn)有類型的功能,或許多相關(guān)的類型共享一組重要的公共功能的場合。一、掌握類的繼承在面向?qū)ο蟮恼Z言中,通過繼承,可以讓一個類擁有另一個類的全部成員,也就是讓一個類繼承另一個類的全部成員。從另一個角度來說,也可以把這一繼承過程看作是從一個類派生出一個新類的過程。派生出來的新類稱為派生類;而被繼承的類稱為基類。下圖給出了一個繼承的示例。一、掌握類的繼承在聲明派生類時,在類名稱后放置一個冒號,然后在冒號后指定要從中繼承的類(即基類)派生類可以訪問基類的非private成員,但是派生類的屬性和方法不能直接訪問基類的private成員。派生類可以影響基類private成員的狀態(tài)改變,但只能通過基類提供并由派生類繼承的非private的屬性和方法來改變C#不支持多重繼承,即一個派生類只能繼承于一個基類

【例8-2】依據(jù)【例題8-1】完成電動汽車的使用。一、掌握類的繼承this關(guān)鍵字引用類的當(dāng)前實(shí)例。靜態(tài)成員方法中不能使用this關(guān)鍵字。this關(guān)鍵字只能在實(shí)例構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗L問器中使用base關(guān)鍵字用于從派生類中訪問基類的成員:

1)指定創(chuàng)建派生類實(shí)例時應(yīng)調(diào)用的基類構(gòu)造函數(shù)

2)調(diào)用基類上已被其他方法重寫的方法不能從靜態(tài)方法中使用base關(guān)鍵字,base關(guān)鍵字只能在實(shí)例構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗L問器中使用

【例題8-3】子類隱式調(diào)用父類的構(gòu)造函數(shù)一、掌握類的繼承C#使用派生類繼承基類的成員,這樣可以避免了重新定義的工作量,同時也減少了程序維護(hù)的工作量。在子類定義中難免派生類會重新定義一個與完全相同的從基類繼承來的字段,稱為基類成員的隱藏,表示新的字段擋住類來自基類的字段??墒褂胣ew保留字來隱藏基類的方法,舊的方法還是會被擴(kuò)充類繼承下來,不過通過new保留字將可以使用一個完全不同的方法取代掉舊的方法。但是這并不意味著來自基類的字段或方法并不存在了,或者是不能用了。而是表示被隱藏的字段、方法只能被來自同樣基類的方法所訪問。

【例題8-4】方法的隱藏。一、掌握類的繼承二、認(rèn)識訪問規(guī)則在繼承關(guān)系中,子類會自動繼承父類中的方法,但有時父類的方法不能滿足子類的需求,那么可以對父類的方法進(jìn)行重寫。當(dāng)重寫父類的方法時,要求子類的方法名、參數(shù)類型和參數(shù)個數(shù)必須與父類方法相同,而且父類方法必須使用virtual關(guān)鍵字修飾,子類方法必須使用override關(guān)鍵字修飾,被virtual關(guān)鍵宰修飾的方法稱為虛方法。

【例題8-5】通過多態(tài)實(shí)現(xiàn)不同動物的叫聲三、認(rèn)識重寫將關(guān)鍵字abstract置于關(guān)鍵字class的前面可以將類聲明為抽象類,抽象類不能實(shí)例化,一般用于提供多個派生類可共享的基類的公共定義。其定義格式如下:

abstractclass類名

{

類成員定義

}

四、認(rèn)識抽象類

抽象類與非抽象類相比,具有下列特征:

1)抽象類不能直接實(shí)例化,對抽象類使用new運(yùn)算符會導(dǎo)致編譯時錯誤??梢远x抽象類型的變量,但值必須為null,或者是其派生的非抽象類的實(shí)例的引用。

2)允許抽象類包含抽象成員。

3)抽象類不能被密封。

4)當(dāng)從抽象類派生非抽象類時,這些非抽象類必須實(shí)現(xiàn)所繼承的所有抽象成員,從而重寫抽象成員?!纠}8-7】使用抽象類和抽象方法完成讓學(xué)生、教師和校長能夠分別介紹自己。四、認(rèn)識抽象類

有時候,你可能不想讓擴(kuò)充類繼承基礎(chǔ)類的某些成員,這時可以使用sealed類,通過seal

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論