Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Bạn cần một cơ chế dùng để so sánh các kiểu tùy biến, cho phép bạn dễ dàng sắp xếp tập hợp chứa các thể hiện của kiểu này. Để cung cấp một cơ chế so sánh chuẩn cho một kiểu, hiện thực giao diện System.IComparable. | 1.1 Hiện thực kiểu khả-so-sánh comparable type Ÿ Bạn cần một cơ chế dùng để so sánh các kiểu tùy biến cho phép bạn dễ dàng sắp xếp tập hợp chứa các thể hiện của kiểu này. Để cung cấp một cơ chế so sánh chuẩn cho một kiểu hiện thực giao diện System.IComparable. Để hỗ trợ nhiều dạng so sánh tạo riêng từng kiểu trợ giúp helper và các kiểu này hiện thực giao diện System.Collections.IComparer. Nếu muốn sắp xếp kiểu của bạn chỉ theo một thứ tự nào đó như ID tăng dần hay tên theo thứ tự alphabet bạn nên hiện thực giao diện IComparable. Giao diện này định nghĩa phương thức CompareTo như sau int CompareTo object obj Đối tượng obj được truyền cho phương thức phải cùng kiểu với đối tượng đang gọi nếu không CompareTo sẽ ném ngoại lệ System.ArgumentException. Giá trị do CompareTo trả về được tính như sau Nếu đối tượng hiện tại nhỏ hơn obj trả về một số âm chẳng hạn -1 . Nếu đối tượng hiện tại có cùng giá trị như obj trả về zero. Nếu đối tượng hiện tại lớn hơn obj trả về một số dương chẳng hạn 1 . Phép so sánh này thực hiện điều gì là tùy thuộc vào kiểu đã hiện thực giao diện IComparable. Ví dụ nếu muốn sắp xếp dựa theo tên bạn cần thực hiện phép so sánh chuỗi String . Tuy nhiên nếu muốn sắp xếp dựa theo ngày sinh bạn cần thực hiện phép so sánh ngày System.DateTime . Để hỗ trợ nhiều dạng sắp xếp cho một kiểu cụ thể bạn phải hiện thực riêng rẽ từng kiểu trợ giúp và các kiểu này hiện thực giao diện IComparer. Giao diện này định nghĩa phương thức Compare như sau int Compare object x object y Kiểu trợ giúp phải đóng gói logic cần thiết để so sánh hai đối tượng và trả về một giá trị dựa trên logic như sau Nếu x nhỏ hơn y trả về một số âm chẳng hạn -1 . Nếu x có cùng giá trị như y trả về zero. Nếu x lớn hơn y trả về một số dương chẳng hạn 1 . Lớp Newspaper dưới đây hiện thực cả giao diện IComparable và IComparer. Phương thức Newspaper.CompareTo thực hiện phép so sánh không phân biệt chữ hoa-thường hai đối tượng Newspaper dựa trên trường name của chúng. Một lớp private lồng bên trong .