CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 80

80
Chương 2: Thao tác dữ liệu

// Sử dụng ArrayList.ToArray để tạo một object[]

// từ nội dung của tập hợp.

object[] array2 = list.ToArray();

// Sử dụng ArrayList.ToArray để tạo một string[] kiểu mạnh

// từ nội dung của tập hợp.

string[] array3 =

(string[])list.ToArray(System.Type.GetType("System.String"));

11.

11.

T o m t t p h p ki u m nh

ạ ộ ậ ợ

ể ạ

T o m t t p h p ki u m nh

ạ ộ ậ ợ

ể ạ

Bạn cần tạo một tập hợp chỉ chứa các phần tử thuộc một kiểu nhất định.

Tạo một lớp dẫn xuất từ lớp

System.Collections.CollectionBase

hay

System.Collections.DictionaryBase

, và hiện thực các phương thức an-toàn-về-

kiểu-dữ-liệu (type-safe) để thao tác trên tập hợp.

Các lớp

CollectionBase

DictionaryBase

có thể đóng vai trò các lớp cơ sở để dẫn xuất ra

các lớp tập hợp an-toàn-kiểu mà không phải hiện thực lại các giao diện chuẩn:

IDictionary

,

IList

,

ICollection

, và

IEnumerable

.

CollectionBase

dùng cho các tập hợp dựa-trên-

Ilist

(như

ArrayList

). Thực chất,

CollectionBase

duy trì tập hợp bằng một đối tượng

ArrayList

chuẩn, có thể được truy

xuất thông qua thuộc tính bảo vệ

List

.

DictionaryBase

dùng cho các tập hợp dựa-trên-

IDictionary

(như

Hashtable

). Thực

chất,

DictionaryBase

duy trì tập hợp bằng một đối tượng

Hashtable

chuẩn, có thể được

truy xuất thông qua thuộc tính bảo vệ

Dictionary

.

Đoạn mã sau hiện thực một tập hợp tên mạnh (dựa trên lớp

CollectionBase

) để thể hiện một

danh sách các đối tượng

System.Reflection.AssemblyName

.

using System.Reflection;

using System.Collections;

public class AssemblyNameList : CollectionBase {

public int Add(AssemblyName value) {

return this.List.Add(value);

}

public void Remove(AssemblyName value) {