Danh mục

Giáo trình hình thành hệ thống ứng dụng điều chỉnh bo mạch mảng một chiều trong dấu ngoặc p3

Số trang: 10      Loại file: pdf      Dung lượng: 1.36 MB      Lượt xem: 9      Lượt tải: 0    
Jamona

Phí tải xuống: 4,000 VND Tải xuống file đầy đủ (10 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tham khảo tài liệu 'giáo trình hình thành hệ thống ứng dụng điều chỉnh bo mạch mảng một chiều trong dấu ngoặc p3', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Nội dung trích xuất từ tài liệu:
Giáo trình hình thành hệ thống ứng dụng điều chỉnh bo mạch mảng một chiều trong dấu ngoặc p3 . Ngôn Ngữ Lập Trình C# Dùng trong các tập hợp dựa trên khóa và giá trị như IDictionary Hashtable và SortedList. Cho phép liệt kê dùng câu lệnh foreach qua tập hợp IDictionaryEnumerator hỗ trợ IDictionary. Bảng 9.2: Giao diện cho tập hợp. Giao diện IEnumerable Chúng ta có thể hỗ trợ cú pháp foreach trong lớp ListBoxTest bằng việc thực thi giao diện IEnumerator. Giao diện này chỉ có một phương thức duy nhất là GetEnumerator(), công việc của phương thức là trả về một sự thực thi đặc biệt của IEnumerator. Do vậy, ngữ nghĩa của lớp Enumerable là nó có thể cung cấp một Enumerator: public IEnumerator GetEnumerator() { return (IEnumerator) new ListBoxEnumerator(this); } phải thực thi những phương thức và thuộc tính IEnumerator. Chúng có thể được Enumerator thực thi trực tiếp trong lớp chứa (trong trường hợp này là lớp ListBoxTest) hay bởi một lớp phân biệt khác. Cách tiếp cận thứ hai thường được sử dụng nhiều hơn, do chúng được đóng gói trong lớp Enumerator hơn là việc phân vào trong các lớp chứa. Do lớp Enumerator được xác định cho lớp chứa, vì theo như trên thì lớp ListBoxEnumerator phải biết nhiều về lớp ListBoxTest. Nên chúng ta phải tạo cho nó một sự thực thi riêng chứa bên trong lớp ListBoxTest. Lưu ý rằng phương thức GetEnumerator truyền đối tượng List- BoxTest hiện thời (this) cho enumerator. Điều này cho phép enumerator có thể liệt kê được các thành phần trong tập hợp của đối tượng ListBoxTest. Ở đây lớp thực thi Enumerator là ListBoxEnumerator, đây là một lớp private được định nghĩa bên trong lớp ListBoxTest. Lớp này thực thi đơn giản bao gồm một thuộc tính public, và hai phương thức public là MoveNext(), và Reset(). Đối tượng ListBoxTest được truyền vào như một đối mục của bộ khởi tạo. Ở đây nó được gán cho biến thành viên myLBT. Trong hàm khởi tạo này cũng thực hiện thiết lập giá trị biến thành viên index là -1, chỉ ra rằng chưa bắt đầu thực hiện việc enumerator đối tượng: public ListBoxEnumerator(ListBoxTest lbt) { this.lbt = lbt; index = -1; } Phương thức MoveNext() gia tăng index và sau đó kiểm tra để đảm bảo rằng việc thực hiện không vượt quá số phần tử trong tập hợp của đối tượng: public bool MoveNext() 243 . Mảng, Chỉ Mục, và Tập Hợp . Ngôn Ngữ Lập Trình C# { index++; if (index >= lbt.strings.Length) return false; else return true; } Phương thức IEnumerator.Reset() không làm gì cả nhưng thiết lập lại giá trị của index là -1. Thuộc tính Current trả về đối tượng chuỗi hiện hành. Đó là tất cả những việc cần làm cho lớp ListBoxTest thực thi một giao diện IEnumerator. Câu lệnh foreach sẽ được gọi để đem về một enumerator, và sử dụng nó để liệt kê lần lượt qua các thành phần trong mảng. Sau đây là toàn bộ chương trình minh họa cho việc thực thi trên.  Ví dụ 9.11: Tạo lớp ListBox hỗ trợ enumerator. ----------------------------------------------------------------------------- namespace Programming_CSharp { using System; using System.Collections; // tạo một control đơn giản public class ListBoxTest: IEnumerable { // lớp thực thi riêng ListBoxEnumerator private class ListBoxEnumerator : IEnumerator { public ListBoxEnumerator(ListBoxTest lbt) { this.lbt = lbt; index = -1; } // gia tăng index và đảm bảo giá trị này hợp lệ public bool MoveNext() { index++; if (index >= lbt.strings.Length) return false; else return true; } 244 . Mảng, Chỉ Mục, và Tập Hợp . Ngôn Ngữ Lập Trình C# public void Reset() { index = -1; } public object Current { get { return( lbt[index]); } } private ListBoxTest lbt; private int index; } // trả về Enumerator public IEnumerator GetEnumerator() { return (IEnumerator) new ListBoxEnumerator(this); } // khởi tạo listbox với chuỗi public ListBoxTest (params string[] initStr) { strings = new String[10]; // copy từ mảng chuỗi tham số foreach (string s in initStr) { strings[ctr++] = s; } } public void Add(string theString) { strings[ctr] = theString; ctr++; } // cho phép truy cập giống như mả ...

Tài liệu được xem nhiều: