Bài giảng Lập trình C# - Bài 12: Generic và Iterator

Generic là gì? System.Collections.Generic namespace Icomparable và Icomparer Interface Generic class Generic method Generic interface Iterator là gì? Tạo iterator

ppt13 trang | Chia sẻ: candy98 | Lượt xem: 531 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Bài giảng Lập trình C# - Bài 12: Generic và Iterator, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài 12Generic và IteratorÔn tập lại bài cũKhái niệm CollectionSystem.Collection namespaceArrayListHashtableSortedListDictionaryStackQueueLinkedListSubject name / Session# / 3 of TotalpageNội dung trình bàyGeneric là gì?System.Collections.Generic namespaceIcomparable và Icomparer InterfaceGeneric classGeneric methodGeneric interfaceIterator là gì?Tạo iteratorGeneric and IteratorVấ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 IteratorVấ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 classesKhi 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 IteratorSystem.Collection.Generic namespaceGeneric and IteratorSystem.Collections.GenericCú pháp khai báo đối tượng lớp generic ClassName objName = new ClassName(); Ví dụ: //ArrayList a = new ArrayList(); List a = new List(); List empList = new List(); Stack st = new Stack();Ví dụ DEMOGeneric and IteratorIcomparable và Icomparer InterfaceNế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ênKhi 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 interfaceVí dụ DEMOGeneric and IteratorTạo Generic class class [where ]Access_modifier: chỉ phạm vi của lớp genericClassName: tên lớp generic: kiểu tham số đại diệntype parameterr constraint name: chỉ kiểu của lớp hoặc interface sẽ áp dụng cho lớp generic, mệnh đề này không bắt buộcCác lớp generic có thể kế thừa nhauVí dụ DEMOGeneric and IteratorGeneric methodGeneric method là những phương thức có thể thao tác với nhiều kiểu dữ liệu khác nhauCó 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,abstractCú pháp: Ví dụ DEMOGeneric and IteratorGeneric interfaceCú pháp interface ]Ví dụ:Ví dụ DEMOGeneric and IteratorIterator 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(), phương thức này trả về kiểu Ienumerator InterfaceVí dụ DEMOGeneric and IteratorKết luậnKỹ thuật genericSystem.Collections.genericGeneric classGeneric methodGeneric interfaceIteratorGeneric and Iterator
Tài liệu liên quan