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

79

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

Để sắp xếp các đối tượng không hiện thực

IComparable

, bạn cần truyền cho phương thức

Sort

một đối tượng hiện thực giao diện

System.Collections.IComparer

. Hiện thực của

IComparer

phải có khả năng so sánh các đối tượng nằm trong mảng hoặc

ArrayList

(xem mục 16.3 để

biết cách hiện thực

IComparable

IComparer

).

10.

10.

Chép m t t p h p vào m t m ng

ộ ậ ợ

ộ ả

Chép m t t p h p vào m t m ng

ộ ậ ợ

ộ ả

Bạn cần chép nội dung của một tập hợp vào một mảng.

Sử dụng phương thức

ICollection.CopyTo

(được hiện thực bởi tất cả các lớp tập

hợp), hoặc sử dụng phương thức

ToArray

(được hiện thực bởi các tập hợp

ArrayList

,

Stack

,

Queue

).

Các phương thức

ICollection.CopyTo

ToArray

có cùng chức năng, chúng chép các phần tử

trong một tập hợp vào một mảng. Sự khác biệt nằm ở chỗ

CopyTo

chép vào một mảng đã có,

trong khi

ToArray

tạo ra một mảng mới rồi chép vào đó.

CopyTo

nhận hai đối số: một mảng và một chỉ số. Mảng này là đích của quá trình sao chép và

phải có kiểu tương thích với các phần tử của tập hợp. Nếu kiểu không tương thích hay không
có sự chuyển đổi ngầm từ kiểu phần tử của tập hợp sang kiểu phần tử của mảng thì ngoại lệ

System.InvalidCastException

sẽ bị ném. Chỉ số là một vị trí trong mảng mà bắt đầu từ đó các

phần tử của tập hợp sẽ được chép vào. Nếu chỉ số này lớn hơn hoặc bằng chiều dài của mảng,
hoặc số phần tử của tập hợp vượt quá sức chứa của mảng thì ngoại lệ

System.ArgumentException

sẽ bị ném. Đoạn mã sau minh họa cách sử dụng

CopyTo

để chép

nội dung của một

ArrayList

vào một mảng:

// Tạo một ArrayList mới và thêm phần tử vào.

ArrayList list = new ArrayList(5);

list.Add("Phuong");

list.Add("Phong");

list.Add("Nam");

list.Add("Tam");

list.Add("Nhan");

// Tạo một string[] và sử dụng ICollection.CopyTo

// để chép nội dung của ArrayList.

string[] array1 = new string[5];

list.CopyTo(array1,0);

Các lớp

ArrayList

,

Stack

, và

Queue

cũng hiện thực phương thức

ToArray

, phương thức này tự

động tạo một mảng với kích thước đủ để chứa các phần tử của của tập hợp. Nếu bạn không
truyền đối số cho

ToArray

, nó sẽ trả về một

object[]

bất chấp kiểu của các đối tượng trong

tập hợp. Tuy nhiên, bạn có thể truyền một đối tượng

System.Type

để chỉ định kiểu của mảng

(Bạn phải ép mảng kiểu mạnh về đúng kiểu). Ví dụ sau minh họa cách sử dụng

ToArray

cho

ArrayList

ở trên:

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.