![Phân tích tư tưởng của nhân dân qua đoạn thơ: Những người vợ nhớ chồng… Những cuộc đời đã hóa sông núi ta trong Đất nước của Nguyễn Khoa Điềm](https://timtailieu.net/upload/document/136415/phan-tich-tu-tuong-cua-nhan-dan-qua-doan-tho-039-039-nhung-nguoi-vo-nho-chong-nhung-cuoc-doi-da-hoa-song-nui-ta-039-039-trong-dat-nuoc-cua-nguyen-khoa-136415.jpg)
Các giao diện và mẫu phần 4
Số trang: 8
Loại file: pdf
Dung lượng: 176.20 KB
Lượt xem: 3
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:
Bạn cần hiện thực một kiểu có thể được sử dụng theo các format string, và có thể tạo ra những biểu diễn chuỗi khác nhau cho nội dung của nó dựa vào format specifier.
Nội dung trích xuất từ tài liệu:
Các giao diện và mẫu phần 4 Hiện thực kiểu khả-định-dạng (formattable type) Bạn cần hiện thực một kiểu có thể được sử dụng theo các format string, và có thể tạo ra những biểu diễn chuỗi khác nhau cho nội dung của nó dựa vào format specifier.▪ Hiện thực giao diện System.IFormattable.Đoạn mã dưới đây minh họa cách sử dụng format specifier (phần in đậm) trong phươngthức WriteLine của lớp System.Console.double a = 345678.5678;uint b = 12000;byte c = 254;Console.WriteLine(a = {0}, b = {1}, and c = {2}, a, b, c);Console.WriteLine(a = {0:c0}, b = {1:n4}, and c = {2,10:x5}, a, b, c);Khi chạy trên máy với thiết lập bản địa là English (U.K.), đoạn mã này sẽ cho kết xuấtnhư sau (thay đổi nội dung của format specifier sẽ thay đổi định dạng của kết xuất mộtcách đáng kể mặc dù dữ liệu vẫn không thay đổi):a = 345678.5678, b = 12000, and c = 254a = £345,679, b = 12,000.0000, and c = 000feĐể kích hoạt việc hỗ trợ format specifier, bạn phải hiện thực giao diện IFormattable. Giaodiện này khai báo một phương thức có tên là ToString với chữ ký như sau:string ToString(string format, IFormatProvider formatProvider);Đối số format là một System.String chứa format string (chuỗi định dạng). Format stringlà phần format specifier phía sau dấu hai chấm. Ví dụ, trong format specifier {2,10:x5} (ởví dụ trên), x5 là format string. Format string chứa những chỉ thị mà thể hiệnIFormattable sẽ sử dụng khi tạo ra dạng chuỗi cho nội dung của nó. Tài liệu .NETFramework phát biểu rằng: những kiểu có hiện thực IFormattable thì phải hỗ trợ formatstring G (general), nhưng những format string được hỗ trợ khác thì phụ thuộc vào hiệnthực. Đối số format là null nếu format specifier không chứa phần format string, ví dụ {0}hay {1,20}.Đối số formatProvider là tham chiếu đến một thể hiện System.IFormatProvider (dùng đểtruy xuất các thông tin bản địa—bao gồm các dữ liệu như biểu tượng tiền tệ hay số lượngchữ số thập phân). Theo mặc định, formatProvider là null, nghĩa là bạn sẽ sử dụng cácthiết lập bản địa của tiểu trình hiện hành (có thể lấy được thông qua phương thức tĩnhCurrentCulture của lớp System.Globalization.CultureInfo)..NET Framework chủ yếu sử dụng IFormattable để hỗ trợ việc định dạng các kiểu giá trị,nhưng nó có thể được sử dụng cho bất kỳ kiểu nào. Ví dụ, lớp Person dưới đây có hiệnthực giao diện IFormattable. Lớp này chứa danh hiệu và tên của một người, và sẽ trả vềtên theo các định dạng khác nhau tùy vào format string. Lớp Person không sử dụng cácthiết lập bản địa do đối số formatProvider cung cấp.using System;public class Person : IFormattable { // Các thành viên private dùng để lưu trữ danh hiệu // và tên của một người. private string title; private string[] names; // Phương thức khởi dựng dùng để thiết lập danh hiệu và tên. public Person(string title, params string[] names) { this.title = title; this.names = names; } // Chép đè phương thức Object.ToString để trả về // tên theo định dạng general. public override string ToString() { return ToString(G, null); } // Hiện thực phương thức IFormattable.ToString để trả về // tên theo các dạng khác nhau dựa trên format string. public string ToString(string format, IFormatProvider formatProvider) { string result = null; // Sử dụng định dạng general nếu format = null. if (format == null) format = G; // Nội dung của format string cho biết định dạng của tên. switch (format.ToUpper()[0]) { case S: // Sử dụng dạng short: first-initial và surname. result = names[0][0] + . + names[names.Length-1]; break; case P: // Sử dụng dạng polite: title, initials, và surname. if (title != null && title.Length != 0) { result = title + . ; } for (int count = 0; count < names.Length; count++) { if ( count != (names.Length - 1)) { result += names[count][0] + . ; } else { result += names[count]; } } break; case I: // Sử dụng dạng informal: chỉ có first-name. result = names[0]; break; case G: default: // Sử dụng dạng mặc định/general: first-name và surname. result = names[0] + + names[names.Length-1]; break; } return result; }}Đoạn mã dưới đây trình bày cách sử dụng khả năng định dạng của lớp Person:// Tạo một đối tượng Person mô tả một người có tên là// Mr. Richard Glen David Peters.Person person = new Person(Mr, Richard, Glen, David, Peters);// Hiển thị tên bằng nhiều format string khác nhau.System.Console.WriteLine(Dear {0:G},, person);System.Console.WriteLine(Dear {0:P},, person);System.Console.WriteLine(Dear {0:I},, person);System.Console.WriteLine(Dear {0},, person);System.Console.WriteLine(Dear {0:S},, person);Khi được thực thi, đoạn mã này sinh ra kết xuất như sau:Dear Richard Peters,Dear Mr. R. G. D. Peters,Dear Richard,Dear Richard Peters,Dear R. Peters, Hiện thực lớp ngoại lệ tùy biến Bạn cần tạo một lớp ngoại lệ tùy biến sao cho bạn có thể sử dụng cơ chế thụ lý ngoại lệ của bộ thực thi để thụ lý các ngoại lệ đặc-trưng-ứng-dụng.▪ Tạo một lớp khả-tuần-tự-hóa, thừa kế lớp System.ApplicationException và hiện thực các phương thức khởi dựng với chữ ký như sau: public CustomException() : base() {} public CustomException(string message) : base(message) {} public CustomException(string message, Exception inner) : base(message, inner) {}Thêm bất cứ thành viên dữ liệu tùy biến nào mà ngoại l ...
Nội dung trích xuất từ tài liệu:
Các giao diện và mẫu phần 4 Hiện thực kiểu khả-định-dạng (formattable type) Bạn cần hiện thực một kiểu có thể được sử dụng theo các format string, và có thể tạo ra những biểu diễn chuỗi khác nhau cho nội dung của nó dựa vào format specifier.▪ Hiện thực giao diện System.IFormattable.Đoạn mã dưới đây minh họa cách sử dụng format specifier (phần in đậm) trong phươngthức WriteLine của lớp System.Console.double a = 345678.5678;uint b = 12000;byte c = 254;Console.WriteLine(a = {0}, b = {1}, and c = {2}, a, b, c);Console.WriteLine(a = {0:c0}, b = {1:n4}, and c = {2,10:x5}, a, b, c);Khi chạy trên máy với thiết lập bản địa là English (U.K.), đoạn mã này sẽ cho kết xuấtnhư sau (thay đổi nội dung của format specifier sẽ thay đổi định dạng của kết xuất mộtcách đáng kể mặc dù dữ liệu vẫn không thay đổi):a = 345678.5678, b = 12000, and c = 254a = £345,679, b = 12,000.0000, and c = 000feĐể kích hoạt việc hỗ trợ format specifier, bạn phải hiện thực giao diện IFormattable. Giaodiện này khai báo một phương thức có tên là ToString với chữ ký như sau:string ToString(string format, IFormatProvider formatProvider);Đối số format là một System.String chứa format string (chuỗi định dạng). Format stringlà phần format specifier phía sau dấu hai chấm. Ví dụ, trong format specifier {2,10:x5} (ởví dụ trên), x5 là format string. Format string chứa những chỉ thị mà thể hiệnIFormattable sẽ sử dụng khi tạo ra dạng chuỗi cho nội dung của nó. Tài liệu .NETFramework phát biểu rằng: những kiểu có hiện thực IFormattable thì phải hỗ trợ formatstring G (general), nhưng những format string được hỗ trợ khác thì phụ thuộc vào hiệnthực. Đối số format là null nếu format specifier không chứa phần format string, ví dụ {0}hay {1,20}.Đối số formatProvider là tham chiếu đến một thể hiện System.IFormatProvider (dùng đểtruy xuất các thông tin bản địa—bao gồm các dữ liệu như biểu tượng tiền tệ hay số lượngchữ số thập phân). Theo mặc định, formatProvider là null, nghĩa là bạn sẽ sử dụng cácthiết lập bản địa của tiểu trình hiện hành (có thể lấy được thông qua phương thức tĩnhCurrentCulture của lớp System.Globalization.CultureInfo)..NET Framework chủ yếu sử dụng IFormattable để hỗ trợ việc định dạng các kiểu giá trị,nhưng nó có thể được sử dụng cho bất kỳ kiểu nào. Ví dụ, lớp Person dưới đây có hiệnthực giao diện IFormattable. Lớp này chứa danh hiệu và tên của một người, và sẽ trả vềtên theo các định dạng khác nhau tùy vào format string. Lớp Person không sử dụng cácthiết lập bản địa do đối số formatProvider cung cấp.using System;public class Person : IFormattable { // Các thành viên private dùng để lưu trữ danh hiệu // và tên của một người. private string title; private string[] names; // Phương thức khởi dựng dùng để thiết lập danh hiệu và tên. public Person(string title, params string[] names) { this.title = title; this.names = names; } // Chép đè phương thức Object.ToString để trả về // tên theo định dạng general. public override string ToString() { return ToString(G, null); } // Hiện thực phương thức IFormattable.ToString để trả về // tên theo các dạng khác nhau dựa trên format string. public string ToString(string format, IFormatProvider formatProvider) { string result = null; // Sử dụng định dạng general nếu format = null. if (format == null) format = G; // Nội dung của format string cho biết định dạng của tên. switch (format.ToUpper()[0]) { case S: // Sử dụng dạng short: first-initial và surname. result = names[0][0] + . + names[names.Length-1]; break; case P: // Sử dụng dạng polite: title, initials, và surname. if (title != null && title.Length != 0) { result = title + . ; } for (int count = 0; count < names.Length; count++) { if ( count != (names.Length - 1)) { result += names[count][0] + . ; } else { result += names[count]; } } break; case I: // Sử dụng dạng informal: chỉ có first-name. result = names[0]; break; case G: default: // Sử dụng dạng mặc định/general: first-name và surname. result = names[0] + + names[names.Length-1]; break; } return result; }}Đoạn mã dưới đây trình bày cách sử dụng khả năng định dạng của lớp Person:// Tạo một đối tượng Person mô tả một người có tên là// Mr. Richard Glen David Peters.Person person = new Person(Mr, Richard, Glen, David, Peters);// Hiển thị tên bằng nhiều format string khác nhau.System.Console.WriteLine(Dear {0:G},, person);System.Console.WriteLine(Dear {0:P},, person);System.Console.WriteLine(Dear {0:I},, person);System.Console.WriteLine(Dear {0},, person);System.Console.WriteLine(Dear {0:S},, person);Khi được thực thi, đoạn mã này sinh ra kết xuất như sau:Dear Richard Peters,Dear Mr. R. G. D. Peters,Dear Richard,Dear Richard Peters,Dear R. Peters, Hiện thực lớp ngoại lệ tùy biến Bạn cần tạo một lớp ngoại lệ tùy biến sao cho bạn có thể sử dụng cơ chế thụ lý ngoại lệ của bộ thực thi để thụ lý các ngoại lệ đặc-trưng-ứng-dụng.▪ Tạo một lớp khả-tuần-tự-hóa, thừa kế lớp System.ApplicationException và hiện thực các phương thức khởi dựng với chữ ký như sau: public CustomException() : base() {} public CustomException(string message) : base(message) {} public CustomException(string message, Exception inner) : base(message, inner) {}Thêm bất cứ thành viên dữ liệu tùy biến nào mà ngoại l ...
Tìm kiếm theo từ khóa liên quan:
công nghệ thông tin kĩ thuật lập trình ngôn ngữ lập trình ngôn ngữ C# C# Các giao diện và mẫu phần 4Tài liệu liên quan:
-
52 trang 436 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 324 0 0 -
74 trang 305 0 0
-
96 trang 301 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 294 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 288 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 279 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 277 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 272 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 271 0 0