Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4.

Similar presentations


Presentation on theme: "第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4."— Presentation transcript:

1 第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4 泛型類別 17-4 泛型類別

2 17-1.NET Framework 類別函式庫 - 說明 Visual Basic 2005 是.NET Framework 程式語 言,它是微軟新世代的程式開發平台,目前版本 是 2.0 版。.NET Framework 是由 CLR ( Common Language Rumtime )和.NET Framework 類別函式庫(.NET Framework Class Library ,簡稱.NET FCL )所組成。 Visual Basic 2005 是.NET Framework 程式語 言,它是微軟新世代的程式開發平台,目前版本 是 2.0 版。.NET Framework 是由 CLR ( Common Language Rumtime )和.NET Framework 類別函式庫(.NET Framework Class Library ,簡稱.NET FCL )所組成。.NET FCL 是一個龐大的類別函式庫,只需支 援.NET Framework 的程式語言都可以使用此類 別函式庫的類別和方法。它是使用稱為 Namespace 名稱空間的階層類別架構所組織成 的函式庫,在每一個名稱空間下,可以擁有眾多 的類別。.NET FCL 是一個龐大的類別函式庫,只需支 援.NET Framework 的程式語言都可以使用此類 別函式庫的類別和方法。它是使用稱為 Namespace 名稱空間的階層類別架構所組織成 的函式庫,在每一個名稱空間下,可以擁有眾多 的類別。

3 17-1.NET Framework 類別函式庫 - 圖例 圖例的 System 是最基礎的名稱空間,其下擁有 基本資料型態的 System.Int32 (每一階層的名 稱空間是使用 "." 運算子連接)、 System.Byte 、 System.Single 和 System.String 等名稱空間。 圖例的 System 是最基礎的名稱空間,其下擁有 基本資料型態的 System.Int32 (每一階層的名 稱空間是使用 "." 運算子連接)、 System.Byte 、 System.Single 和 System.String 等名稱空間。

4 17-1.NET Framework 類別函式庫 - 專案預設匯入的名稱空間

5 17-1.NET Framework 類別函式庫 - 匯入名稱空間 如果不屬於預設匯入的名稱空間,例如:第 15 章 的 System.Net.Mail 名稱空間和第 17-2-3 節的 StringBuilder 物件,就需要自行在程式碼以 Imports 關鍵字匯入所需的名稱空間,如下所示: 如果不屬於預設匯入的名稱空間,例如:第 15 章 的 System.Net.Mail 名稱空間和第 17-2-3 節的 StringBuilder 物件,就需要自行在程式碼以 Imports 關鍵字匯入所需的名稱空間,如下所示: Imports 名稱空間 上述程式碼匯入指定的名稱空間,其功能如同在 參考標籤勾選指定的名稱空間,如此在程式碼就 可以使用此名稱空間的類別。 上述程式碼匯入指定的名稱空間,其功能如同在 參考標籤勾選指定的名稱空間,如此在程式碼就 可以使用此名稱空間的類別。

6 17-2 使用.NET FCL 的類別 17-2-1 ArrayList 集合物件 17-2-1 ArrayList 集合物件 17-2-2 Hashtable 集合物件 17-2-2 Hashtable 集合物件 17-2-3 StringBuilder 物件 17-2-3 StringBuilder 物件

7 17-2-1 ArrayList 集合物件 - 說明 「集合物件」( Collections )可以處理不定元素 數的資料(類似動態陣列),物件可以讓程式設 計者不用考慮記憶體配置問題,只需使用相關方 法,就可以新增、刪除和插入集合物件中的元素。 「集合物件」( Collections )可以處理不定元素 數的資料(類似動態陣列),物件可以讓程式設 計者不用考慮記憶體配置問題,只需使用相關方 法,就可以新增、刪除和插入集合物件中的元素。 在.NET Framework 的集合類別屬於 System.Collections 名稱空間,提供數種集合類 別 ArrayList 、 Hashtable 、 Queue 和 Stack 等, 可以用來儲存 Object 資料型態的元素,或是 Visual Basic 基本資料型態。 在.NET Framework 的集合類別屬於 System.Collections 名稱空間,提供數種集合類 別 ArrayList 、 Hashtable 、 Queue 和 Stack 等, 可以用來儲存 Object 資料型態的元素,或是 Visual Basic 基本資料型態。

8 17-2-1 ArrayList 集合物件 - 建立 ArrayList 物件儲存元素的方式類似陣列, 元素以索引方式依序的儲存,我們只需將 元素新增或插入 ArrayList 物件,而不用事 先宣告物件尺寸,如下所示: ArrayList 物件儲存元素的方式類似陣列, 元素以索引方式依序的儲存,我們只需將 元素新增或插入 ArrayList 物件,而不用事 先宣告物件尺寸,如下所示: Dim names As ArrayList = New ArrayList() 上述程式碼使用建構子建立 ArrayList 物件 後,就可以使用物件的屬性和方法來存取 元素。 上述程式碼使用建構子建立 ArrayList 物件 後,就可以使用物件的屬性和方法來存取 元素。

9 17-2-1 ArrayList 集合物件 - 屬性與方 法

10 17-2-1 ArrayList 集合物件 - 取得所有 元素 在新增 ArrayList 物件元素後,.NET Framework 集合物件可以使用 For Each 迴圈取得集合物件的所有元素,如下所示: 在新增 ArrayList 物件元素後,.NET Framework 集合物件可以使用 For Each 迴圈取得集合物件的所有元素,如下所示: For Each str in names Console.WriteLine("[" & str & "]") Console.WriteLine("[" & str & "]")Next 上述迴圈可以取出名為 names 的 ArrayList 物件的所有元素。 上述迴圈可以取出名為 names 的 ArrayList 物件的所有元素。

11 17-2-2 Hashtable 集合物件 - 建立 Hashtable 物件的元素需要指定 Key 鍵值來 排列,而且新增元素自動以 Key 鍵值的雜湊 碼( Hash Code )來取得存放位置,所以 只提供 Add() 方法,而沒有 Insert() 方法, 如下所示: Hashtable 物件的元素需要指定 Key 鍵值來 排列,而且新增元素自動以 Key 鍵值的雜湊 碼( Hash Code )來取得存放位置,所以 只提供 Add() 方法,而沒有 Insert() 方法, 如下所示: Dim users As Hashtable = New Hashtable() 上述程式碼建立好 Hashtable 物件 users 後, 就可以使用 Add() 方法新增元素。 上述程式碼建立好 Hashtable 物件 users 後, 就可以使用 Add() 方法新增元素。

12 17-2-2 Hashtable 集合物件 - 新增元 素 建立好 Hashtable 物件 users 後,就可以使 用 Add() 方法新增元素,如下所示: 建立好 Hashtable 物件 users 後,就可以使 用 Add() 方法新增元素,如下所示: users.Add("hueyan", " 陳會安 ") users.Add("jane", " 江小魚 ") users.Add("joe", " 陳小安 ") users.Add("tom", " 張無忌 ") 上述 Add() 方法有 2 個參數,第 1 個是 Key 鍵值,第 2 個是儲存的值。 上述 Add() 方法有 2 個參數,第 1 個是 Key 鍵值,第 2 個是儲存的值。

13 17-2-2 Hashtable 集合物件 - 屬性 Hashtable 物件的相關屬性,如下表所示: Hashtable 物件的相關屬性,如下表所示:

14 17-2-2 Hashtable 集合物件 - 方法 Hashtable 物件的相關方法,如下表所示: Hashtable 物件的相關方法,如下表所示:

15 17-2-2 Hashtable 集合物件 - 取出所 有元素 在 Hashtable 物件的元素儲存 Key 和 Value 兩個值, 所以 For Each 迴圈需要使用 Keys 屬性取得 Key 值 的物件集合後,才能取出物件的所有元素,如下 所示: 在 Hashtable 物件的元素儲存 Key 和 Value 兩個值, 所以 For Each 迴圈需要使用 Keys 屬性取得 Key 值 的物件集合後,才能取出物件的所有元素,如下 所示: For Each str in users.Keys Console.WriteLine("[" & str & ":" & users(str) & "]") Console.WriteLine("[" & str & ":" & users(str) & "]")Next 上述程式碼取得每一個元素的 Key 鍵值,然後使 用 users(str) 取得每一個元素的 Value 值。 上述程式碼取得每一個元素的 Key 鍵值,然後使 用 users(str) 取得每一個元素的 Value 值。

16 17-2-3 StringBuilder 物件 - 說明 StringBuilder 類別類似字串 String 的物件,屬於 System.Text 名稱空間,因為 Visual Basic 專案 沒有匯入此名稱空間,所以在程式開頭需要自行 匯入此名稱空間,如下所示: StringBuilder 類別類似字串 String 的物件,屬於 System.Text 名稱空間,因為 Visual Basic 專案 沒有匯入此名稱空間,所以在程式開頭需要自行 匯入此名稱空間,如下所示: Imports System.Text StringBuilder 是允許更動字串內容的物件,可以 使用 Append() 、 Insert() 、 Remove() 和 Replace() 方法來處理字串內容。 StringBuilder 是允許更動字串內容的物件,可以 使用 Append() 、 Insert() 、 Remove() 和 Replace() 方法來處理字串內容。

17 17-2-3 StringBuilder 物件 - 建立 建立 StringBuilder 物件的程式碼,如下所示: 建立 StringBuilder 物件的程式碼,如下所示: Dim builder As StringBuilder = New _ StringBuilder("Visual 2005 程式設計 ", 30) StringBuilder("Visual 2005 程式設計 ", 30) 上述程式碼使用 New 關鍵字建立 StringBuilder 物件 builder ,第 1 個參數是字串內容,第 2 個參 數是 StringBuilder 物件的容量。 上述程式碼使用 New 關鍵字建立 StringBuilder 物件 builder ,第 1 個參數是字串內容,第 2 個參 數是 StringBuilder 物件的容量。 在建立好 StringBuilder 物件後,就可以使用屬性 和方法來處理字串內容。 在建立好 StringBuilder 物件後,就可以使用屬性 和方法來處理字串內容。

18 17-2-3 StringBuilder 物件 - 屬性 StringBuilder 物件相關屬性,如下表所示: StringBuilder 物件相關屬性,如下表所示:

19 17-2-3 StringBuilder 物件 - 方法

20 17-3 My 名稱空間的類別 17-3-1 My 名稱空間的基礎 17-3-1 My 名稱空間的基礎 17-3-2 使用 My 名稱空間的物件 17-3-2 使用 My 名稱空間的物件

21 17-3-1 My 名稱空間的基礎 - 說明 如同 Windows 桌面上的捷徑,其主要目的 是幫助使用者快速找到常用的應用程式和 檔案。 Visual Basic 2005 的 My 名稱空間, 就是存取.NET Framework 類別函式庫的 捷徑,可以讓我們快速取得常用類別來建 立應用程式。 如同 Windows 桌面上的捷徑,其主要目的 是幫助使用者快速找到常用的應用程式和 檔案。 Visual Basic 2005 的 My 名稱空間, 就是存取.NET Framework 類別函式庫的 捷徑,可以讓我們快速取得常用類別來建 立應用程式。 在 My 名稱空間的第一層物件,可以讓我們 輕鬆存取網路設定、磁碟檔案、應用程式 到 Windows 登錄資料等各種功能。 在 My 名稱空間的第一層物件,可以讓我們 輕鬆存取網路設定、磁碟檔案、應用程式 到 Windows 登錄資料等各種功能。

22 17-3-1 My 名稱空間的基礎 - 第一層物件

23 17-3-2 使用 My 名稱空間的物件 - 取得電腦和應用程式的相關資訊 在 Visual Basic 程式碼可以使用 My.Computer 和 My.Application 物件的屬性,來取得電腦和應 用程式的相關資訊,如下所示: 在 Visual Basic 程式碼可以使用 My.Computer 和 My.Application 物件的屬性,來取得電腦和應 用程式的相關資訊,如下所示: Console.WriteLine(" 電腦名稱 : " & My.Computer.Name) Console.WriteLine(" 系統時間 : " & _ My.Computer.Clock.LocalTime) My.Computer.Clock.LocalTime) Console.WriteLine(" 程式名稱 : " & _ My.Application.Info.AssemblyName) My.Application.Info.AssemblyName) Console.WriteLine(" 程式標題 : " & My.Application.Info.Title) Console.WriteLine(" 程式路徑 : " & _ My.Application.Info.DirectoryPath) My.Application.Info.DirectoryPath)

24 17-3-2 使用 My 名稱空間的物件 - 文字檔案處理 在 My.Computer.FileSystem 物件的屬性和方法, 可以執行檔案與資料夾處理,例如:建立和寫入 文字檔案內容,如下所示: 在 My.Computer.FileSystem 物件的屬性和方法, 可以執行檔案與資料夾處理,例如:建立和寫入 文字檔案內容,如下所示: My.Computer.FileSystem.WriteAllText("Test.txt", _ "Visual Basic 2005 程式設計 ", False) "Visual Basic 2005 程式設計 ", False) WriteAllText() 方法可以寫入第 2 個參數的字串至 第 1 個參數的文字檔案,最後 1 個參數指定是否新 增至檔尾, False 為不是。同樣方式, ReadAllText() 方法可以讀取整個文字檔案的內 容,如下所示: WriteAllText() 方法可以寫入第 2 個參數的字串至 第 1 個參數的文字檔案,最後 1 個參數指定是否新 增至檔尾, False 為不是。同樣方式, ReadAllText() 方法可以讀取整個文字檔案的內 容,如下所示: str = _ My.Computer.FileSystem.ReadAllText("Test.txt") My.Computer.FileSystem.ReadAllText("Test.txt")

25 17-3-2 使用 My 名稱空間的物件 - 測試網路連線與播放音效 在 My.Computer.Network 物件的屬性與方法, 可以測試連線、上傳和下載檔案。例如:測試網 路連線,如下所示: 在 My.Computer.Network 物件的屬性與方法, 可以測試連線、上傳和下載檔案。例如:測試網 路連線,如下所示: If My.Computer.Network.IsAvailable Then Console.WriteLine(" 電腦現在有網路連線...") Console.WriteLine(" 電腦現在有網路連線...") End If If 條件使用 IsAvailable 屬性測試網路連線,有連 線傳回 True ,否則為 False 。播放音效是使用 My.Computer.Audio 物件的方法,如下所示: If 條件使用 IsAvailable 屬性測試網路連線,有連 線傳回 True ,否則為 False 。播放音效是使用 My.Computer.Audio 物件的方法,如下所示: My.Computer.Audio.PlaySystemSound( _ Media.SystemSounds.Beep) Media.SystemSounds.Beep)

26 17-4 泛型類別 17-4-1 建立泛型類別 17-4-1 建立泛型類別 17-4-2 泛型集合物件 17-4-2 泛型集合物件

27 17-4-1 建立泛型類別 - 說明 泛型類別( Generic Classes )可以視為是 一個模子,倒入塑膠就可以做成塑膠成品, 倒入金屬就是金屬鑄件。 泛型類別( Generic Classes )可以視為是 一個模子,倒入塑膠就可以做成塑膠成品, 倒入金屬就是金屬鑄件。 對比程式語言來說,倒入泛型類別的是不 同的資料型態,換句話說,同一個類別就 可以依倒入的資料型態來處理整數、浮點 數或字串等不同資料型態的資料。 對比程式語言來說,倒入泛型類別的是不 同的資料型態,換句話說,同一個類別就 可以依倒入的資料型態來處理整數、浮點 數或字串等不同資料型態的資料。

28 17-4-1 建立泛型類別 - 堆疊 我們可以建立堆疊( Stacks )資料結構的泛型類 別,類別擁有兩種特性,如下所示: 我們可以建立堆疊( Stacks )資料結構的泛型類 別,類別擁有兩種特性,如下所示: 只允許從堆疊頂端存取資料。 只允許從堆疊頂端存取資料。 資料存取的順序是先進後出( Last Out, First In ), 也就是先存入堆疊的資料,反而最後取出。 資料存取的順序是先進後出( Last Out, First In ), 也就是先存入堆疊的資料,反而最後取出。 堆疊類別存取的資料可以是整數、浮點數或字串, 如果沒有使用泛型類別,我們需要宣告 StackOfInt 、 StackOfFloat 和 StackOfString 等類別來處理不同資料型態的資料。如果建立泛 型類別,就可以建立儲存各種不同資料型態的物 件。 堆疊類別存取的資料可以是整數、浮點數或字串, 如果沒有使用泛型類別,我們需要宣告 StackOfInt 、 StackOfFloat 和 StackOfString 等類別來處理不同資料型態的資料。如果建立泛 型類別,就可以建立儲存各種不同資料型態的物 件。

29 17-4-1 建立泛型類別 -GenericStack 類別宣告 Class GenericStack(Of ItemType) Private Data() As ItemType Private Data() As ItemType Private Index As Integer Private Index As Integer ……… ……… Public Function IsEmpty() As Boolean Public Function IsEmpty() As Boolean ……… ……… End Function End Function Public Sub Push(ByVal item As ItemType) Public Sub Push(ByVal item As ItemType) ……… ……… End Sub End Sub Public Function Pop() As ItemType Public Function Pop() As ItemType ……… ……… End Function End Function End Class

30 17-4-1 建立泛型類別 - 建立物件 在程式碼建立堆疊物件時,就可以指定泛 型類別使用的資料型態,如下所示: 在程式碼建立堆疊物件時,就可以指定泛 型類別使用的資料型態,如下所示: Dim st1 As _ New GenericStack(Of Integer)(10) New GenericStack(Of Integer)(10) 程式碼宣告 GenericStack 物件 st1 ,括號 使用的資料型態是 Integer ,換句話說, Data 陣列儲存的資料型態是整數;如果使 用 String 字串,此時堆疊就可以儲存字串 資料型態的資料。 程式碼宣告 GenericStack 物件 st1 ,括號 使用的資料型態是 Integer ,換句話說, Data 陣列儲存的資料型態是整數;如果使 用 String 字串,此時堆疊就可以儲存字串 資料型態的資料。

31 17-4-2 泛型集合物件 - 說明 因為 ArrayList 集合物件存入的是 Object 物件, 所以可以存入各種不同資料型態的元素。不過, 當從集合物件取出元素時,程式設計者需要自行 記得存入元素是哪一種資料型態,以便將 Object 物件型態轉換成指定的資料型態。 因為 ArrayList 集合物件存入的是 Object 物件, 所以可以存入各種不同資料型態的元素。不過, 當從集合物件取出元素時,程式設計者需要自行 記得存入元素是哪一種資料型態,以便將 Object 物件型態轉換成指定的資料型態。 在.NET Framework 2.0 的 System.Collections.Generic 名稱空間提供泛 型集合物件 List 、 Dictionary 、 SortedDictionary 、 LinkedList 、 Queue 和 Stack 等類別,可以使用資料型態參數來指定處 理的資料型態,如此就不需要自行處理元素型態 的轉換。 在.NET Framework 2.0 的 System.Collections.Generic 名稱空間提供泛 型集合物件 List 、 Dictionary 、 SortedDictionary 、 LinkedList 、 Queue 和 Stack 等類別,可以使用資料型態參數來指定處 理的資料型態,如此就不需要自行處理元素型態 的轉換。

32 17-4-2 泛型集合物件 -List 泛型集合 物件 ( 建立 ) List 泛型集合物件類似 ArrayList 物件,元 素是以索引方式依序的儲存,我們只需將 元素新增或插入 List 物件,而不用事先宣告 物件尺寸,如下所示: List 泛型集合物件類似 ArrayList 物件,元 素是以索引方式依序的儲存,我們只需將 元素新增或插入 List 物件,而不用事先宣告 物件尺寸,如下所示: Dim names As New List(Of String)(10) 上述程式碼是使用建構子建立 List 物件,括 號使用 Of 關鍵字指定型態是 String 字串, 參數 10 是初始容量。 上述程式碼是使用建構子建立 List 物件,括 號使用 Of 關鍵字指定型態是 String 字串, 參數 10 是初始容量。

33 17-4-2 泛型集合物件 -List 泛型集合 物件 ( 屬性 ) List 物件的相關屬性,如下表所示: List 物件的相關屬性,如下表所示:

34 17-4-2 泛型集合物件 -List 泛型集合 物件 ( 方法 ) List 物件的相關方法, T 是型態參數,如下 表所示: List 物件的相關方法, T 是型態參數,如下 表所示:


Download ppt "第 17 章 泛型類別與.NET Framework 17-1.NET Framework 類別函式庫 17-1.NET Framework 類別函式庫 17-2 使用.NET FCL 的類別 17-2 使用.NET FCL 的類別 17-3 My 名稱空間的類別 17-3 My 名稱空間的類別 17-4."

Similar presentations


Ads by Google