Giáo trình hướng dẫn tạo chuỗi dùng phương thức Tostring sử dụng biểu thức quy tắc qua lớp regex p8
Số trang: 5
Loại file: pdf
Dung lượng: 867.35 KB
Lượt xem: 6
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Phương thức này lấy một tham số: một ủy quyền có kiểu WhichIsFirst với tên là theDelegateFunc. Phương thức Sort giao phó trách nhiệm quyết định thứ tự đến trước sau của hai đối tượng bên trong Pair đến phương thức được đóng gói bởi ủy quyền. Bên trong thân của Sort, phương thức ủy quyền được gọi và trả về một giá trị, giá trị này là một trong hai giá trị liệt kê của comparison.
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn tạo chuỗi dùng phương thức Tostring sử dụng biểu thức quy tắc qua lớp regex p8 Ngôn Ngữ Lập Trình C# object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } Phương thức này lấy một tham số: một ủy quyền có kiểu WhichIsFirst với tên làtheDelegateFunc. Phương thức Sort giao phó trách nhiệm quyết định thứ tự đến trước saucủa hai đối tượng bên trong Pair đến phương thức được đóng gói bởi ủy quyền. Bên trongthân của Sort, phương thức ủy quyền được gọi và trả về một giá trị, giá trị này là một tronghai giá trị liệt kê của comparison. Nếu giá trị trả về là theSecondComesFirst, đối tượng bên trong của Pair sẽ được hoán đổivị trí, trường hợp ngược lại thì không làm gì cả. Hãy tưởng tượng chúng ta đang sắp xếp những Student theo tên. Chúng ta viết mộtphương thức trả về theFirstComesFirst nếu tên của sinh viên đầu tiên đến trước và the-SecondComesFirst nếu tên của sinh viên thứ hai đến trước. Nếu chúng ta đưa vào là “Amy,Beth” thì phương thức trả về kết quả là theFirstComesFirst. Và ngược lại nếu chúng ta truyền“Beth, Amy” thì kết quả trả về là theSecondComesFirst. Khi chúng ta nhận được kết quảtheSecondComesFirst, phương thức Sort sẽ đảo hai đối tượng này trong mảng, và thiết lập làAmy ở vị trí đầu còn Beth ở vị trí thứ hai. Tiếp theo chúng ta sẽ thêm một phương thức ReverseSort, phương thức này đặt các mụctrong mảng theo thứ tự đảo ngược lại: public void ReverseSort( WhichIsFirst theDeleagteFunc) { if ( theDelegateFunc( thePair[0], thePair[1]) == comparison.theFirstComesFirst) { object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } Việc thực hiện cũng tương tự như phương thức Sort. Tuy nhiên, phương thức thực hiệnviệc hoán đổi nếu phương thức ủy quyền xác định là đối tượng trước tới trước. Do vậy, kếtquả thực hiện của phương thức là đối tượng thứ hai sẽ đến trước. Lúc này nếu chúng ta truyềnvào là “Amy, Beth”, phương thức ủy quyền sẽ trả về theFirstComesFirst, và phương thứcReverseSort sẽ hoán đổi vị trí của hai đối tượng này, thiết lập Beth đến trước. Điều này chophép chúng ta sử dụng cùng phương thức ủy quyền tương tự như Sort, mà không cần yêu cầuđối tượng hỗ trợ phương thức trả về giá trị được sắp ngược. 308 Cơ Chế Ủy Quyền - Sự Kiện Ngôn Ngữ Lập Trình C# Lúc này điều cần thiết là chúng ta tạo ra vài đối tượng để sắp xếp. Ta tạo hai lớp đốitượng đơn giản như sau: lớp đối tượng Student và lớp đối tượng Cat. Gán cho đối tượngStudent một tên vào lúc tạo: public class Student { public Student (string name) { this.name = name; } }Lớp đối tượng Student này yêu cầu hai phương thức, một là phương thức phủ quyết ToString(), và một phương thức khác được đóng gói như là phương thức ủy quyền.Lớp Student phải phủ quyết phương thức ToString() để cho phương thức ToString() của lớpPair sử dụng một cách chính xác. Việc thực thi này thì không có gì phức tạp mà chỉ đơn thuầnlà trả về tên của sinh viên: public override string ToString() { return name; } cũng phải thực thi một phương thức hỗ trợ cho Pair.Sort() có thể ủy quyền xác địnhStudentthứ tự của hai đối tượng xem đối tượng nào đến trước: public static comparison WhichStudentComesFirst(Object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; return ( String.Compare( s1.name, s2.name) Ngôn Ngữ Lập Trình C#Lớp thứ hai là Cat, để phục vụ cho mục đích của chúng ta, thì Cat sẽ được sắp xếp theo trọnglượng, nhẹ đến trước nặng. Ta có khai báo lớp Cat như sau: public class Cat { public Cat( int weight) { this.weight = weight; } // sắp theo trọng lượng public static comparison WhichCatComesFirst(Object o1, Object o2) { Cat c1 = (Cat) o1; Cat c2 = (Cat) o2; return c1.weight > c2.weight ? theSecondComesFirst : theFirstComesFirst; } public override string ToString() { return weight.ToString(); } // biến lưu giữ trọng lượng private int weight; }Cũng tương tự như lớp Student thì lớp Cat cũng phủ quyết phương thức ToString() và thựcthi một phương thức tĩnh với cú pháp tương ứng với phương thức ủy quyền. Và chúng ta cũnglưu ý là phương thức ủy quyền của Student và Cat là không cùng tên với nhau. Chúng takhông cần thiết phải làm cùng tên vì chúng ta sẽ gán đến phương thức ủy quyền lúc thực thi.Ví dụ minh họa 11.1 sau tr ...
Nội dung trích xuất từ tài liệu:
Giáo trình hướng dẫn tạo chuỗi dùng phương thức Tostring sử dụng biểu thức quy tắc qua lớp regex p8 Ngôn Ngữ Lập Trình C# object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } Phương thức này lấy một tham số: một ủy quyền có kiểu WhichIsFirst với tên làtheDelegateFunc. Phương thức Sort giao phó trách nhiệm quyết định thứ tự đến trước saucủa hai đối tượng bên trong Pair đến phương thức được đóng gói bởi ủy quyền. Bên trongthân của Sort, phương thức ủy quyền được gọi và trả về một giá trị, giá trị này là một tronghai giá trị liệt kê của comparison. Nếu giá trị trả về là theSecondComesFirst, đối tượng bên trong của Pair sẽ được hoán đổivị trí, trường hợp ngược lại thì không làm gì cả. Hãy tưởng tượng chúng ta đang sắp xếp những Student theo tên. Chúng ta viết mộtphương thức trả về theFirstComesFirst nếu tên của sinh viên đầu tiên đến trước và the-SecondComesFirst nếu tên của sinh viên thứ hai đến trước. Nếu chúng ta đưa vào là “Amy,Beth” thì phương thức trả về kết quả là theFirstComesFirst. Và ngược lại nếu chúng ta truyền“Beth, Amy” thì kết quả trả về là theSecondComesFirst. Khi chúng ta nhận được kết quảtheSecondComesFirst, phương thức Sort sẽ đảo hai đối tượng này trong mảng, và thiết lập làAmy ở vị trí đầu còn Beth ở vị trí thứ hai. Tiếp theo chúng ta sẽ thêm một phương thức ReverseSort, phương thức này đặt các mụctrong mảng theo thứ tự đảo ngược lại: public void ReverseSort( WhichIsFirst theDeleagteFunc) { if ( theDelegateFunc( thePair[0], thePair[1]) == comparison.theFirstComesFirst) { object temp = thePair[0]; thePair[0] = thePair[1]; thePair[1] = temp; } } Việc thực hiện cũng tương tự như phương thức Sort. Tuy nhiên, phương thức thực hiệnviệc hoán đổi nếu phương thức ủy quyền xác định là đối tượng trước tới trước. Do vậy, kếtquả thực hiện của phương thức là đối tượng thứ hai sẽ đến trước. Lúc này nếu chúng ta truyềnvào là “Amy, Beth”, phương thức ủy quyền sẽ trả về theFirstComesFirst, và phương thứcReverseSort sẽ hoán đổi vị trí của hai đối tượng này, thiết lập Beth đến trước. Điều này chophép chúng ta sử dụng cùng phương thức ủy quyền tương tự như Sort, mà không cần yêu cầuđối tượng hỗ trợ phương thức trả về giá trị được sắp ngược. 308 Cơ Chế Ủy Quyền - Sự Kiện Ngôn Ngữ Lập Trình C# Lúc này điều cần thiết là chúng ta tạo ra vài đối tượng để sắp xếp. Ta tạo hai lớp đốitượng đơn giản như sau: lớp đối tượng Student và lớp đối tượng Cat. Gán cho đối tượngStudent một tên vào lúc tạo: public class Student { public Student (string name) { this.name = name; } }Lớp đối tượng Student này yêu cầu hai phương thức, một là phương thức phủ quyết ToString(), và một phương thức khác được đóng gói như là phương thức ủy quyền.Lớp Student phải phủ quyết phương thức ToString() để cho phương thức ToString() của lớpPair sử dụng một cách chính xác. Việc thực thi này thì không có gì phức tạp mà chỉ đơn thuầnlà trả về tên của sinh viên: public override string ToString() { return name; } cũng phải thực thi một phương thức hỗ trợ cho Pair.Sort() có thể ủy quyền xác địnhStudentthứ tự của hai đối tượng xem đối tượng nào đến trước: public static comparison WhichStudentComesFirst(Object o1, Object o2) { Student s1 = (Student) o1; Student s2 = (Student) o2; return ( String.Compare( s1.name, s2.name) Ngôn Ngữ Lập Trình C#Lớp thứ hai là Cat, để phục vụ cho mục đích của chúng ta, thì Cat sẽ được sắp xếp theo trọnglượng, nhẹ đến trước nặng. Ta có khai báo lớp Cat như sau: public class Cat { public Cat( int weight) { this.weight = weight; } // sắp theo trọng lượng public static comparison WhichCatComesFirst(Object o1, Object o2) { Cat c1 = (Cat) o1; Cat c2 = (Cat) o2; return c1.weight > c2.weight ? theSecondComesFirst : theFirstComesFirst; } public override string ToString() { return weight.ToString(); } // biến lưu giữ trọng lượng private int weight; }Cũng tương tự như lớp Student thì lớp Cat cũng phủ quyết phương thức ToString() và thựcthi một phương thức tĩnh với cú pháp tương ứng với phương thức ủy quyền. Và chúng ta cũnglưu ý là phương thức ủy quyền của Student và Cat là không cùng tên với nhau. Chúng takhông cần thiết phải làm cùng tên vì chúng ta sẽ gán đến phương thức ủy quyền lúc thực thi.Ví dụ minh họa 11.1 sau tr ...
Tìm kiếm theo từ khóa liên quan:
giáo trình đại học tài liệu mạng giáo trình cơ điện giáo trình thiết kế tài liệu kế toánGợi ý tài liệu liên quan:
-
Giáo trình phân tích một số loại nghiệp vụ mới trong kinh doanh ngân hàng quản lý ngân quỹ p5
7 trang 470 0 0 -
MARKETING VÀ QUÁ TRÌNH KIỂM TRA THỰC HIỆN MARKETING
6 trang 297 0 0 -
122 trang 214 0 0
-
QUY CHẾ THU THẬP, CẬP NHẬT SỬ DỤNG CƠ SỞ DỮ LIỆU DANH MỤC HÀNG HÓA BIỂU THUẾ
15 trang 204 1 0 -
BÀI GIẢNG KINH TẾ CHÍNH TRỊ MÁC - LÊNIN - TS. NGUYỄN VĂN LỊCH - 5
23 trang 203 0 0 -
Giáo trình chứng khoán cổ phiếu và thị trường (Hà Hưng Quốc Ph. D.) - 4
41 trang 194 0 0 -
Giáo trình hướng dẫn phân tích các thao tác cơ bản trong computer management p6
5 trang 192 0 0 -
BÀI GIẢNG LÝ THUYẾT MẠCH THS. NGUYỄN QUỐC DINH - 1
30 trang 171 0 0 -
Giáo trình phân tích giai đoạn tăng lãi suất và giá trị của tiền tệ theo thời gian tích lũy p10
5 trang 168 0 0 -
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - NGÂN HÀNG ĐỀ THI HẾT HỌC PHẦN HỌC PHẦN: TOÁN KINH TẾ
9 trang 168 0 0