s2-1深入.net平臺和編程_第1頁
s2-1深入.net平臺和編程_第2頁
s2-1深入.net平臺和編程_第3頁
s2-1深入.net平臺和編程_第4頁
s2-1深入.net平臺和編程_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用集合組織相關數(shù)據(jù)第三章回顧與作業(yè)點評什么是封裝?如何實現(xiàn)封裝?類的公有和私有成員在類圖中如何表現(xiàn)?classTest{staticvoidMain(string[]args){Student[]stus=newStudent[2]{newStudent(),newStudent()};stus[0].Age=10;stus[0].Name="張靚";stus[1].Age=19;stus[1].Name="小新";intnum=0;Test.ChangeAge(stus,num);}publicstaticvoidChangeAge(Student[]stu,intnum){for(inti=0;i<stu.Length;i++){if(stu[i].Age<15){stu[i].Age=15;num++;}}}}說出調(diào)用方法后,num以及學生的姓名和年齡num:0張靚:15小新:19預習檢查ArrayList中如何添加數(shù)據(jù)?定義泛型集合時的特殊語法符號?本章任務實現(xiàn)員工信息管理實現(xiàn)員工考勤管理理解集合的概念熟練使用集合訪問數(shù)據(jù)理解泛型的概念熟練使用各種泛型集合本章目標數(shù)組的局限性SE[

]engineers=newSE[3];engineers[0]=newSE();engineers[1]=newSE();……如果每個部門的人數(shù)不固定部門中來了一個新同事調(diào)整大小困難增加元素困難能否動態(tài)的維護一個集合?重新定義數(shù)組3個工程師對象組成的集合數(shù)組長度定義很大ArrayList是一個可動態(tài)維護長度的集合可維護動態(tài)長度的集合新增元素可刪除元素可訪問單個元素objectobjectobjectobject0123索引(下標)object40123ArrayList自動調(diào)整索引通過索引訪問ArrayList的初始化usingSystem.Collections;…ArrayListengineers=newArrayList();ArrayListengineers=newArrayList(5)可以指定長度引入命名空間實例化一個對象常見錯誤未引入命名空間定義時未實例化引入System.Collections命名空間實例化ArrayList對象ArrayList添加元素intAdd(Objectvalue)//添加一個對象到集合的末尾ArrayListengineers=newArrayList();SEjack=newSE();jack.Name="王小毛";……engineers.Add(jack);創(chuàng)建工程師對象添加對象到集合連續(xù)添加三個工程師對象并獲取集合元素的數(shù)目返回索引engineers.Count獲取元素數(shù)目建立部門工程師集合演示示例:向集合添加元素訪問ArrayList元素(類型)ArrayList[index]

//按指定索引(下標)取得對象SEengineer=(SE)

engineers[0];MessageBox.Show(engineer.SayHi());…按索引取值轉換為工程師對象需要類型轉換獲取集合元素,并執(zhí)行問好演示示例:訪問集合元素ArrayList的遍歷foreach(Objectobj

inengineers){SEseForeach=(SE)obj;Console.WriteLine(seForeach.Name);}通過對象遍歷王小毛周新雨張燁可以使用和數(shù)組類似的方式for(inti=0;i<engineers.Count;i++){SEseFor=(SE)engineers[i];Console.WriteLine(seFor.Name);}foreach方式類型轉換演示示例:遍歷集合元素刪除ArrayList的元素ArrayList.Remove(對象名)//刪除指定對象名的對象ArrayList.RemoveAt(index)//刪除指定索引的對象ArrayList.Clear()//清除集合內(nèi)的所有元素engineers.RemoveAt(0);engineers.Remove(ema);MessageBox.Show(string.Format("部門共包括{0}個工程師。",engineers.Count.ToString()));SEleave=(SE)engineers[0];MessageBox.Show(leave.SayHi());通過索引刪除元素剩余的元素會自動調(diào)整索引通過指定對象刪除元素常見錯誤-1//…//添加元素engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);//刪除元素engineers.RemoveAt(0);engineers.RemoveAt(1);engineers.RemoveAt(2);運行這段代碼會發(fā)生錯誤?演示示例:常見錯誤1索引會自動調(diào)整,刪除兩個元素后,不再有索引“2”常見錯誤-2//定義三個SE對象(省略)SEse2=newSE();

se2.Name="王小毛";se2.Age=26;……engineers.Add(se2);engineers.Remove(se2);//打印集合數(shù)目…定義一個對象與前面定義的jack對象屬性值相同Remove(se2),能否刪除jack對象?演示示例:常見錯誤2小結學生類Student已定義,屬性為:Name、Age使用ArrayList存儲學生集合添加兩個學生(周杰倫,22;楊伊,21)使用for和foreach遍歷學生信息參考答案ArrayList通過索引獲取對象為什么使用哈希表是否能夠通過關鍵字獲取該對象呢?動態(tài)可維護長度可通過關鍵字檢索C#提供另一種集合集合:HashtableSEengineer=(SE)

engineers[0];ArrayList中元素頻繁變化,跟蹤元素下標很困難什么是HashTableArrayList每個元素對應一個索引Hashtable通常稱為哈希表根據(jù)鍵(Key)可以查找到相應的值(Value)objectobjectobjectobjectobject0123…ArrayList索引KeyValueKeyValueKeyValueKeyValueKeyValueHashtable值鍵鍵和值一一對應使用哈希表Hashtableengineers=newHashtable();

engineers.Add(jack.ID,

jack);添加元素KeyValueSEse2=(SE)engineers["000"];se2.SayHi();通過key獲取元素sengineers.Remove("000");…通過key刪除元素給哈希表添加元素獲取哈希表的元素刪除哈希表的元素需要類型轉換演示示例:哈希表操作哈希表的遍歷foreach(Objectobjinengineers.Values){SEse=(SE)obj;Console.WriteLine(se.Name);}如何遍歷一個哈希表?KeyValueKeyValueKeyValueKeyValueKeyValueValues不能遍歷整個對象,而是遍歷Valuesforeach(Objectobjinengineers.Keys){Console.WriteLine((string)obj);}可以遍歷Keys小結刪除一個ArrayList元素有幾種方法?Hashtable和ArrayList的主要區(qū)別是什么?類型安全2-1……PMpm=newPM();pm.Name="蓋茨";pm.Id="8230";……engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);engineers.Add(pm);//添加一個項目經(jīng)理對象能否加入一個PM對象?foreach(Objectobjinengineers){

SEengineer=(SE)obj;

MessageBox.Show(engineer.SayHi());}遍歷這個集合是否有問題?考慮出現(xiàn)的問題演示示例:類型安全類型安全2-2SE集合王小毛周新雨張燁蓋茨添加對象遍歷集合,轉換為SE對象對象存儲不易控制類型轉換容易出錯!!!PM對象運行錯誤使用List<T>加強類型安全使用List<T>……List<SE>engineers=newList<SE>();engineers.Add(jack);engineers.Add(joe);engineers.Add(ema);engineers.Add(pm);//添加一個項目經(jīng)理對象……將SE對象加入工程師集合編譯出錯泛型集合演示示例:泛型集合List保證類型安全什么是泛型集合泛型<T>最常見的用途是創(chuàng)建集合類泛型集合可以約束集合內(nèi)的元素類型典型泛型集合List<T>,Dictionary<K,V><T>、<K,V>表示該泛型集合中的元素類型List<SE>SE對象PM對象允許添加不允許添加SE對象無需轉換類型使用List<T>泛型集合命名空間:System.Collections.Generic創(chuàng)建List<T>泛型集合遍歷List<SE>engineers=newList<SE>();foreach(SEseinengineers){MessageBox.Show(se.SayHi());}只能保存SE對象無需類型轉換演示示例:泛型集合List<T>操作VS2010自動引入List<T>的訪問方式與ArrayList類似List<T>與ArrayList訪問List<T>與ArrayList的對比是否有哈希表那樣存儲Key和Value形式的泛型集合呢?異同點

List<T>

ArrayList不同點增加元素時類型嚴格檢查可以增加任何類型添加和讀取值類型元素時,無需裝箱拆箱添加和讀取值類型元素時,需要裝箱拆箱相同點通過索引訪問集合的元素添加對象方法相同通過索引刪除元素Dictionary<K,V>概述Dictionary<K,V>通常稱為字典<K,V>約束集合中元素類型編譯時檢查類型約束無需裝箱拆箱操作與哈希表操作類似Dictionary<K,V>的使用engineers.Add(jack.ID,jack);…SEengineer=engineers["000"];…engineers.Remove("000");…添加一對Key/Value通過Key獲取元素通過Key刪除元素//Dictionary<string,SE>方式foreach(SEseinengineers.Values){MessageBox.Show(se.SayHi());}遍歷Values演示示例:泛型集合Dictionary操作Dictionary<string,SE>engineers

=newDictionary<string,SE>();Key存儲String類型Value存儲SE類型利用Dictionary<K,V>存儲工程師列表Dictionary<K,V>與哈希表訪問Dictionary<K,V>與哈希表的對比異同點

Dictionary<K,V>Hashtable不同點增加元素時類型嚴格檢查可以增加任何類型無需裝箱拆箱需要裝箱拆箱相同點通過Key獲取Value添加對象方法相同遍歷方法相同泛型泛型操作的數(shù)據(jù)類型被定義為一個參數(shù)泛型類如何選中ComboBox中的一項后,獲得對應的一個對象classComboBoxItem<T>{privatestring_itemText;//顯示的文字publicstringItemText{get{return_itemText;}set{_itemText=value;}}privateT_itemValue;//實際的對象publicTItemValue{get{return_itemValue;}set{_itemValue=value;}}}演示示例:泛型類泛型的重要性泛型的重要性泛型是未來的主流技術之一解決了很多需要繁瑣操作的問題提供了更好的類型安全性CLR支持泛型指導——新增員工和顯示列表2-1訓練要點:泛型集合List<T>需求說明:實現(xiàn)員工信息和考勤管理系統(tǒng)實現(xiàn)新增員工(員工ID唯一)使用DataGridView控件展示員工列表指導——新增員工和顯示列表2-2實現(xiàn)思路:實現(xiàn)新增功能實現(xiàn)展示員工列表功能難點指導:向集合List<T>中新增對象使用maintanceType標識操作(1:新增、0:修改)驗證:工號不能重復使用DataGridView控件展示集合信息完成時間:30分鐘this.dgvProgrammer.DataSource=newBindingList<SE>(list);練習——模糊查詢和信息刪除需求說明:實現(xiàn)刪除員工信息實現(xiàn)

溫馨提示

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

評論

0/150

提交評論