Bài 12
Generic và Iterator
Ôn tập lại bài cũ
• Khái niệm Collection
• System.Collection namespace
• ArrayList
• Hashtable
• SortedList
• Dictionary
• Stack
• Queue
• LinkedList
Generic and Iterator
Nội dung trình bày
• Generic là gì?
• System.Collections.Generic namespace
• Icomparable và Icomparer Interface
• Generic class
• Generic method
• Generic interface
• Iterator là gì?
Subject name / Session# / 3 of Totalpage
• Tạo iterator
Generic and Iterator
Vấn đề của generalized class và sự ra đời của kỹ thuật Generic?
• using System.Collections;
• ArrayList myList = new ArrayList();
• Employee myEmp = new Employee();
• myList.Add(myEmp);
• myEmp = (Employee)myList[0];
• ArrayList myList = new ArrayList();
•
int myInt = 99;
• myList.Add(myInt); // box the int to an object
• myInt = (int)myList.[0]; // unbox the object to an int
Generic and Iterator
Vấn đề của generalized class và sự ra đời của kỹ thuật Generic?
• Các lớp trong System.Collection namespace là các generalized
classes
• Khi sử dụng, chúng ta luôn phải ép kiểu(cast), chương trình luôn
phải thực hiện thao tác box và unbox khi thực thi, do đó chiếm
nhiều bộ nhớ và thời gian của CPU.
• Kỹ thuật generic đã ra đời trong phiên bản C# 2.0 để khắc phục
những nhược điểm trên của các generalized class( nằm trong
System.Collection namespace).
• Các lớp generic, các phương thức generic sử dụng tham số
kiểu(type parameter), tham số kiểu sẽ chỉ ra kiểu đối tượng mà lớp,
phương thức sẽ thao tác.
Generic and Iterator
System.Collection.Generic namespace
Generic and Iterator
System.Collections.Generic
• Cú pháp khai báo đối tượng lớp generic
ClassName
ClassName
Ví dụ:
//ArrayList a = new ArrayList();
List a = new List();
List empList = new List();
Stack st = new Stack();
Ví dụ DEMO
Generic and Iterator
Icomparable và Icomparer Interface
• Nếu tập hợp là số nguyên hay chuỗi khi đó chúng ta chỉ việc đơn
giản gọi phương thức sort ra để sắp xếp(mặc định sắp theo thứ tự
tăng dần, muôn sắp xêp giản dần chúng ta có thể dùng phương
thức reverse() để đảo ngược thứ tự lại sau khi đã gọi phương thức
sort).
• Khi muốn sắp xếp tập hợp các đối tượng(ví dụ tập đối tượng lớp
student, employee…) chúng ta phải cài đặt một trong hai interface
trên
• Khi muốn sắp xếp theo một trường nào đó chúng ta cài đặt
interface Icomparable.
• Ngược lại khi muốn sắp xếp trên nhiều trường, khi đó chúng ta phải
cài đặt Icomparer interface
Ví dụ DEMO
Generic and Iterator
Tạo Generic class
[where
• Access_modifier: chỉ phạm vi của lớp generic
• ClassName: tên lớp generic
•
• type parameterr constraint name: chỉ kiểu của lớp hoặc interface sẽ
Các lớp generic có thể kế thừa nhau
Ví dụ DEMO
áp dụng cho lớp generic, mệnh đề này không bắt buộc
Generic and Iterator
Generic method
• Generic method là những phương thức có thể thao tác với nhiều
kiểu dữ liệu khác nhau
• Có thể khai báo bên trong một generic class hoặc một non-generic
class(lớp bình thường). Khi khai báo bên trong một generic class,
thân của phương thức có thể tham chiếu đến cả kiểu tham số của
lớp và phương thức.
• Có thể khai báo với các từ khóa: virtual, override,abstract
• Cú pháp:
• Ví dụ DEMO parameter list> Generic interface • Cú pháp • list><[where Ví dụ DEMO • Ví dụ: Iterator là gì? • Khi chúng ta xây dựng một lớp mà lớp đó nó họat động như một tập hợp. Làm thế nào để duyệt qua được các thành phần trong một tập hợp đó? • Chúng ta có thể truy xuất thông qua các chỉ số của mảng để lấy ra các thành phần trong lớp. Nhưng chương trình sẽ rất dài dòng. • Iterator là đặc tính mới trong C# 2.0 nó dùng để xây dựng nên kỹ thuật duyệt các phần tử trong một tập hợp. • Iterator được tạo bằng cách cài đặt phương thức GetEnumerator(), Ví dụ DEMO phương thức này trả về kiểu Ienumerator Interface Kết luận • Kỹ thuật generic • System.Collections.generic • Generic class • Generic method • Generic interface • IteratorGeneric and Iterator
Generic and Iterator
Generic and Iterator

