C#數組、結構和枚舉.ppt_第1頁
C#數組、結構和枚舉.ppt_第2頁
C#數組、結構和枚舉.ppt_第3頁
C#數組、結構和枚舉.ppt_第4頁
C#數組、結構和枚舉.ppt_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

4、dy的煩惱是,隨著碟片不斷增多,查找碟片越來越難,如果能給每張碟片一個編號,編號表示碟片存放的位置在第幾排第幾列,這樣會方便很多,每一張碟片的編號及其存儲位置如圖5.1所示。,5.1.3 支持數組語言實現的基類:System.Array,【本節(jié)示例參考:源代碼chapter55.1.3ArrayClass】 C#中的數組是由System.Array類派生而來的引用對象,它提供一些公共的屬性和方法,對數組的操作提供了很大幫助。其常用的屬性和方法如表5.1所示(更多的屬性和方法請參考MSDN)。常用方法的使用會在以下章節(jié)中介紹。,5.1.4 訪問數組元素,【本節(jié)示例參考:源代碼chapter55.

5、1.4VisitExample】 Landy的新碟到了以后,生意好了很多,每天都有很多人去租碟。通過每張碟的編號,從CD架上找到碟片。這就好比從數組中去訪問每個元素一樣。訪問元素的方式很多,最直接的就是通過數組的下標。假如所有碟片都放在一排陳列架上,就要用一維數組,例如: 定義一維數組: string movies = new string “功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3”,”牛仔褲的夏天2” 獲取第一個元素:movies0 =“功夫熊貓”。獲取最后一個元素:movies4 = “牛仔褲的夏天2”。假如碟片分別放在多排CD架上每排可以放多張碟,則要用二級數組,定義二維數

6、組: string , movies = new string , “功夫熊貓”,”不可思議綠巨人”,”赤壁”,”木乃伊3” 這樣創(chuàng)建的數組,表示CD在架上是這樣擺放的,如圖5.2所示。獲取第一個元素:movies0,0 = “功夫熊貓”。獲取最后一個元素:movies1,1 = “木乃伊3”。,5.1.5 使用foreach語句遍歷數組,【本節(jié)示例參考:源代碼chapter55.1.5ForeachExample】 遍歷是指全部訪問數組中的元素一次且僅一次,可以在遍歷的過程中完成查找等許多操作,需要注意一點:foreach循環(huán)對數組內容進行只讀訪問,所以不能改變任何元素的值。 foreach

7、語句格式如下: foreach (data_typt item_name in arr_name) /遍歷每一個元素 注意:無論是幾維的數組,foreach語句都會從最深層的原子元素開始,遍歷一次且僅一次,因此,不需要嵌套foreach循環(huán)。,5.1.6 查找數組元素,【本節(jié)示例參考:源代碼chapter55.1.6SearchExample】 數組的元素是有序的,每一個元素對應一個唯一下標,在程序設計中,經常需要查找某個元素是否存在,以及該元素所在的位置等操作??梢酝ㄟ^遍歷整個數組的方式來查找,也可以通過System.Array提供的BinarySearch方法完成這些操作。 有個客戶需要租

8、赤壁,Landy需要在CD架中找到片名叫赤壁的碟片,下面的例子演示了查找元素赤壁所在的位置的兩種方法:,5.1.7 對數組進行排序,【本節(jié)示例參考:源代碼chapter55.1.7SortExample】 生活中會經常遇到一些排序問題,比如把一個班的考試成績排序,足球比賽積分排序等。那么怎樣用計算機程序來完成排序工作呢?這個問題前人早就有深刻的研究,總結出了很多高效率的排序算法,下面就來看看怎樣用C#語言實現經典的冒泡排序。在編寫程序之前,先來了解一下冒泡排序算法原理。假設現有5個數:3,5,2,4,1,要將它們從小到大排序。冒泡排序的過程如圖5.3所示。,5.2 用C#中的結構來實現音像記錄

9、表,C#是面向對象的語言,結構可視為輕量級的類,是創(chuàng)建用于存儲少量數據的數據類型的理想選擇,不能表示以后可能要通過繼承進行擴展的類型。本章將通過講解實現完善碟片編號的功能來向讀者展示結構的用法。,5.2.1 音像信息記錄表程序實例,【本節(jié)示例參考:源代碼chapter55.2.1StructTest】 通過數組一節(jié),Landy完成了碟片的存儲和給碟片編號的任務?,F在Landy希望把所有的碟片記錄在電子表格中,以方便查找。對電子表格的設計通常采用圖5.4的形式。,5.2.2 理解值類型的結構,實踐了上一節(jié)的例子以后,再來了解結構的概念,相信大家已經茅塞頓開了。定義結構的語法非常簡單,以關鍵字st

10、ruct打頭,格式如下: struct 結構名 屬性,方法等 結構是用戶定義的值類型。與類相似,結構可以包含構造函數、常數、字段、方法、屬性、索引器、運算符和嵌套類型(如上一節(jié)的例子,分別定義了no、name、isRent三個字段和一個Status方法)。在結構的聲明中,屬性是無法初始化的,除非聲明為const或static,例如: public struct CDList public const float PI = 3.14f; public static string category=動畫片; ,.3 用C#枚舉給音像分類,問題總是伴隨著項目的不斷壯大而產生,這是軟件不斷升級的一個原

11、因,為了在升級過程中不造成更大的困擾,程序員需要在開始軟件設計的時候,充分地預感未來可能會發(fā)生的事情,并想辦法及早地規(guī)避問題的發(fā)生。 音像店碟片的不斷增加,在成百上千的記錄表中要找到一條信息,也是相當費時的,Landy需要對記錄表進行優(yōu)化。他需要對碟片按照下面方式分類:文藝片,戰(zhàn)爭片,喜劇片,愛情片,科幻片按照這種方式給碟片分類,會更方便管理,對于大數據量的碟片管理會帶來幫助。,5.3.1 用枚舉來給音像歸類實例,【本節(jié)示例參考:源代碼chapter55.3.1EnumTest】 繼續(xù)重構音像記錄表,把每一條記錄加上一個類別屬性,當有用戶要租喜劇片的時候,就只需要把類別是喜劇片的分出來,在里面

12、找到用戶所需要的碟片,如圖5.7所示。,5.3.2 通過實例理解枚舉的作用,【本節(jié)示例參考:源代碼C8Example_TraverseArray】 程序中的任何一個概念,都是為了解決某類問題而來,枚舉亦是如此。枚舉可以理解為一組常數的集合,它很好地限定了這組常數的范圍,供程序在任何需要的地方引用。枚舉的定義以關鍵字enum來標示,語法如下: enum 枚舉名 枚舉成員 或者: 訪問修辭符 enum 枚舉名:基礎類型 枚舉成員 ,5.4 小結,學完本章后,讀者將了解以下內容。 (1)數組、結構和枚舉都是C#中常用的數據類型結構。 (2)數組能夠存儲具有相同數據類型的一組值,數組可以分為一維數組、

13、多維數組和交錯數組。 (3)可以使用foreach語句遍歷數組,使用System.Array類提供的方法操作數組。 (4)結構用關鍵字struct聲明,結構跟類相似,可以包含構造函數、常數、字段、方法、屬性、索引器、運算符和嵌套類型。 (5)要求訪問快、且?guī)缀醪蛔鲞\算的那些數據應該作為結構,而需要做很多運算的那些數據應該作為類來處理。 (6)枚舉用關鍵字enum聲明,枚舉是用于存儲一組常數的集合,他很好的限定了這組常數的范圍,供程序在任何需要的地方引用。,本章習題,一、選擇題 1在面的說法,有誤的是 ( ) string movies = new string 周一,周二,周三,周四,周五 A數組下標從0開始 B其中movies3= 周四 Cmovies.Length =5 Dmovies.Rank = 2 2在C#中,下列哪些語句可以創(chuàng)建一個具有3 個初始值為的元素的字符串數組?( ) Astring StrList3(); Bstring3 StrList = ,; Cstring StrList

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論