C#數(shù)組、結(jié)構(gòu)和枚舉課件_第1頁
C#數(shù)組、結(jié)構(gòu)和枚舉課件_第2頁
C#數(shù)組、結(jié)構(gòu)和枚舉課件_第3頁
C#數(shù)組、結(jié)構(gòu)和枚舉課件_第4頁
C#數(shù)組、結(jié)構(gòu)和枚舉課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第章 C#數(shù)組、結(jié)構(gòu)和枚舉聲明一個變量可以存儲一個值,當(dāng)遇到要存儲多個相同類型的值的時候,變量就顯得無能為力,數(shù)組正是在這種存儲需求下設(shè)計的一種數(shù)據(jù)結(jié)構(gòu);常量可用來存儲一個固定值,但是要存儲多個固定值的時候,常量也失效了,這時候就要借助于枚舉來實現(xiàn);而結(jié)構(gòu)是用來表示更加復(fù)雜的值類型,在結(jié)構(gòu)里,用戶可以聲明不同數(shù)據(jù)類型的變量作為一個整體。學(xué)完本章后,讀者將了解數(shù)組、結(jié)構(gòu)和枚舉的用法。本章主要涉及到的知識點(diǎn)有:數(shù)組:理解數(shù)組的概念,并創(chuàng)建數(shù)組。使用數(shù)組:包括定位、遍歷、查找、排序等典型操作。結(jié)構(gòu):在需要考慮運(yùn)行效率、且?guī)缀醪蛔鲞\(yùn)算的數(shù)據(jù)應(yīng)該作為結(jié)構(gòu)定義。了解結(jié)構(gòu)的用法。枚舉:用于聲明一組命名的常數(shù)

2、。理解枚舉的好處,并使用枚舉。5.1 C#中的數(shù)組 在日常生活中,人們用容器來存儲物品,為了方便查找,總是將眾多的物品分門別類地存儲在不同的容器中。在計算機(jī)程序中,同樣會遇到處理大量具有相同類型的數(shù)據(jù)的時候,C#語言提供了“數(shù)組”這一數(shù)據(jù)結(jié)構(gòu),用于處理這樣的數(shù)據(jù)。5.1.1 聲明和初始化一維數(shù)組【本節(jié)示例參考:源代碼chapter55.1.1ArrayExample】數(shù)組類似于生活中的容器,可以將一組數(shù)據(jù)類型相同的數(shù)據(jù)按照一定的順序存儲起來,存儲在數(shù)組中的數(shù)據(jù)又叫元素,可以通過“索引”,或叫“下標(biāo)”的整數(shù)來區(qū)分?jǐn)?shù)組中的元素。C#支持一維數(shù)組、多維數(shù)組(矩形數(shù)組)和數(shù)組的數(shù)組(交錯數(shù)組)。下面通

3、過一個例子來學(xué)習(xí)一維數(shù)組。暑期到了,音像店的老板Landy整理了一個CD架位置,并買了5張碟片放在上面出租,分別是功夫熊貓、不可思議綠巨人、赤壁、木乃伊3、牛仔褲的夏天2,有客人來租碟的時候,就從相應(yīng)的位置找到這張碟。如果把這個CD架理解為一個“數(shù)組”,它順序存放的“元素”就是碟片。在程序中,可以用以下的語句聲明一個數(shù)組:string movies;聲明以后,需要讓計算機(jī)內(nèi)存分配指定大小的空間,這叫初始化數(shù)組,如下所示:movies = new string5;5.1.2 聲明和初始化其他類型的數(shù)組 通過一維數(shù)組的方式,解決了Landy保存部分碟片的問題。但是Landy的煩惱是,隨著碟片不斷增

4、多,查找碟片越來越難,如果能給每張碟片一個編號,編號表示碟片存放的位置在第幾排第幾列,這樣會方便很多,每一張碟片的編號及其存儲位置如圖5.1所示。5.1.3 支持?jǐn)?shù)組語言實現(xiàn)的基類:System.Array5.1.4 訪問數(shù)組元素【本節(jié)示例參考:源代碼chapter55.1.4VisitExample】 Landy的新碟到了以后,生意好了很多,每天都有很多人去租碟。通過每張碟的編號,從CD架上找到碟片。這就好比從數(shù)組中去訪問每個元素一樣。訪問元素的方式很多,最直接的就是通過數(shù)組的下標(biāo)。假如所有碟片都放在一排陳列架上,就要用一維數(shù)組,例如:定義一維數(shù)組:string movies = new s

5、tring “功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3”,”牛仔褲的夏天2”獲取第一個元素:movies0 =“功夫熊貓”。獲取最后一個元素:movies4 = “牛仔褲的夏天2”。假如碟片分別放在多排CD架上每排可以放多張碟,則要用二級數(shù)組,定義二維數(shù)組:string , movies = new string , “功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3”這樣創(chuàng)建的數(shù)組,表示CD在架上是這樣擺放的,如圖5.2所示。獲取第一個元素:movies0,0 = “功夫熊貓”。獲取最后一個元素:movies1,1 = “木乃伊3”。5.1.5 使用foreach語句遍歷數(shù)組

6、【本節(jié)示例參考:源代碼chapter55.1.5ForeachExample】遍歷是指全部訪問數(shù)組中的元素一次且僅一次,可以在遍歷的過程中完成查找等許多操作,需要注意一點(diǎn):foreach循環(huán)對數(shù)組內(nèi)容進(jìn)行只讀訪問,所以不能改變?nèi)魏卧氐闹?。foreach語句格式如下:foreach (data_typt item_name in arr_name) /遍歷每一個元素注意:無論是幾維的數(shù)組,foreach語句都會從最深層的原子元素開始,遍歷一次且僅一次,因此,不需要嵌套foreach循環(huán)。5.1.6 查找數(shù)組元素【本節(jié)示例參考:源代碼chapter55.1.6SearchExample】數(shù)組的元

7、素是有序的,每一個元素對應(yīng)一個唯一下標(biāo),在程序設(shè)計中,經(jīng)常需要查找某個元素是否存在,以及該元素所在的位置等操作??梢酝ㄟ^遍歷整個數(shù)組的方式來查找,也可以通過System.Array提供的BinarySearch方法完成這些操作。有個客戶需要租赤壁,Landy需要在CD架中找到片名叫赤壁的碟片,下面的例子演示了查找元素赤壁所在的位置的兩種方法:5.1.7 對數(shù)組進(jìn)行排序【本節(jié)示例參考:源代碼chapter55.1.7SortExample】生活中會經(jīng)常遇到一些排序問題,比如把一個班的考試成績排序,足球比賽積分排序等。那么怎樣用計算機(jī)程序來完成排序工作呢?這個問題前人早就有深刻的研究,總結(jié)出了很多

8、高效率的排序算法,下面就來看看怎樣用C#語言實現(xiàn)經(jīng)典的冒泡排序。在編寫程序之前,先來了解一下冒泡排序算法原理。假設(shè)現(xiàn)有5個數(shù):3,5,2,4,1,要將它們從小到大排序。冒泡排序的過程如圖5.3所示。5.2 用C#中的結(jié)構(gòu)來實現(xiàn)音像記錄表 C#是面向?qū)ο蟮恼Z言,結(jié)構(gòu)可視為輕量級的類,是創(chuàng)建用于存儲少量數(shù)據(jù)的數(shù)據(jù)類型的理想選擇,不能表示以后可能要通過繼承進(jìn)行擴(kuò)展的類型。本章將通過講解實現(xiàn)完善碟片編號的功能來向讀者展示結(jié)構(gòu)的用法。5.2.1 音像信息記錄表程序?qū)嵗颈竟?jié)示例參考:源代碼chapter55.2.1StructTest】通過數(shù)組一節(jié),Landy完成了碟片的存儲和給碟片編號的任務(wù)?,F(xiàn)在La

9、ndy希望把所有的碟片記錄在電子表格中,以方便查找。對電子表格的設(shè)計通常采用圖5.4的形式。5.2.2 理解值類型的結(jié)構(gòu)實踐了上一節(jié)的例子以后,再來了解結(jié)構(gòu)的概念,相信大家已經(jīng)茅塞頓開了。定義結(jié)構(gòu)的語法非常簡單,以關(guān)鍵字struct打頭,格式如下:struct 結(jié)構(gòu)名 屬性,方法等結(jié)構(gòu)是用戶定義的值類型。與類相似,結(jié)構(gòu)可以包含構(gòu)造函數(shù)、常數(shù)、字段、方法、屬性、索引器、運(yùn)算符和嵌套類型(如上一節(jié)的例子,分別定義了no、name、isRent三個字段和一個Status方法)。在結(jié)構(gòu)的聲明中,屬性是無法初始化的,除非聲明為const或static,例如:public struct CDList pu

10、blic const float PI = 3.14f; public static string category=動畫片; .3 用C#枚舉給音像分類 問題總是伴隨著項目的不斷壯大而產(chǎn)生,這是軟件不斷升級的一個原因,為了在升級過程中不造成更大的困擾,程序員需要在開始軟件設(shè)計的時候,充分地預(yù)感未來可能會發(fā)生的事情,并想辦法及早地規(guī)避問題的發(fā)生。 音像店碟片的不斷增加,在成百上千的記錄表中要找到一條信息,也是相當(dāng)費(fèi)時的,Landy需要對記錄表進(jìn)行優(yōu)化。他需要對碟片按照下面方式分類:文藝片,戰(zhàn)爭片,喜劇片,愛情片,科幻片按照這種方式給碟片分類,會更方便管理,對于大數(shù)據(jù)量的碟片管理會帶來幫助。 5

11、.3.1 用枚舉來給音像歸類實例【本節(jié)示例參考:源代碼chapter55.3.1EnumTest】繼續(xù)重構(gòu)音像記錄表,把每一條記錄加上一個類別屬性,當(dāng)有用戶要租喜劇片的時候,就只需要把類別是喜劇片的分出來,在里面找到用戶所需要的碟片,如圖5.7所示。 5.3.2 通過實例理解枚舉的作用【本節(jié)示例參考:源代碼C8Example_TraverseArray】程序中的任何一個概念,都是為了解決某類問題而來,枚舉亦是如此。枚舉可以理解為一組常數(shù)的集合,它很好地限定了這組常數(shù)的范圍,供程序在任何需要的地方引用。枚舉的定義以關(guān)鍵字enum來標(biāo)示,語法如下:enum 枚舉名 枚舉成員或者:訪問修辭符 enu

12、m 枚舉名:基礎(chǔ)類型 枚舉成員 5.4 小結(jié)學(xué)完本章后,讀者將了解以下內(nèi)容。(1)數(shù)組、結(jié)構(gòu)和枚舉都是C#中常用的數(shù)據(jù)類型結(jié)構(gòu)。(2)數(shù)組能夠存儲具有相同數(shù)據(jù)類型的一組值,數(shù)組可以分為一維數(shù)組、多維數(shù)組和交錯數(shù)組。(3)可以使用foreach語句遍歷數(shù)組,使用System.Array類提供的方法操作數(shù)組。(4)結(jié)構(gòu)用關(guān)鍵字struct聲明,結(jié)構(gòu)跟類相似,可以包含構(gòu)造函數(shù)、常數(shù)、字段、方法、屬性、索引器、運(yùn)算符和嵌套類型。(5)要求訪問快、且?guī)缀醪蛔鲞\(yùn)算的那些數(shù)據(jù)應(yīng)該作為結(jié)構(gòu),而需要做很多運(yùn)算的那些數(shù)據(jù)應(yīng)該作為類來處理。(6)枚舉用關(guān)鍵字enum聲明,枚舉是用于存儲一組常數(shù)的集合,他很好的限定了這組常數(shù)的范圍,供程序在任何需要的地方引用。本章習(xí)題一、選擇題1在面的說法,有誤的是 ( )string movies = new string 周一,周二,周三,周四,周五A數(shù)組下標(biāo)從0開始B其中movies3= 周四Cmovies.Length =5Dmovies.Rank = 22在C#中,下列哪些語句可以創(chuàng)建一個具有3 個初始值為的元素的字符串?dāng)?shù)組?( ) Astring StrList3(); Bstring3 StrList = ,; Cstring StrList = ,;

溫馨提示

  • 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

提交評論