Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 125 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
125
Dung lượng
2,01 MB
Nội dung
TẬP ĐỒN DỆT MAY VIỆT NAM TRƯỜNG CAO ĐẲNG CƠNG NGHỆ TP.HCM GIÁO TRÌNH LẬP TRÌNH VISUAL C# Nghề: Cơng nghệ thơng tin Trình độ: Cao đẳng Ban hành kèm theo Quyết định số: /QĐ- ngày ………tháng năm…… Trường Cao đẳng Kinh tế - Kỹ Thuật Vinatex TP HCM TP HỒ CHÍ MINH, NĂM 2018 LƯU HÀNH NỘI BỘ MỤC LỤC Chương 1: MICROSOFT.NET I.GIỚI THIỆU NGÔN NGỮ C# II.CÁC THÀNH PHẦN QUAN TRỌNG TRONG C# 1 CLR (Common Language Runtime) IL (Intermediate Language) Thư viện (Assembly) Các lớp NET Tạo ứng dụng NET sử dụng C# 6.Tạo lưu project console 8.Giao diện ứng dụng Chương CĂN BẢN C# I-KIỂU DỮ LIỆU 1.Kiểu liệu xây dựng sẵn 2.Chọn kiểu liệu 3.Chuyển đổi kiểu liệu II-BIẾN VÀ HẰNG Biến Hằng Kiểu liệt kê Kiểu chuỗi ký tự Định danh Mảng 10 III-BIỂU THỨC 10 IV-KHOẢNG TRẮNG 11 V-Câu lệnh (statement) 11 Phân nhánh khơng có điều kiện 11 Phân nhánh có điều kiện 11 Câu lệnh lặp 14 VI-Toán tử 19 1.Toán tử gán 19 Toán tử toán học 19 Toán tử tăng giảm 19 Toán tử quan hệ 20 Toán tử logic 21 Độ ưu tiên toán tử 21 Tốn tử ba ngơi 22 VII NAMESPACE 22 VIII CÁC CHỈ DẪN BIÊN DỊCH 23 Chương 3MỘT SỐ ĐIỀU KHIỂN TRONG WINFORM 25 I SỬ DỤNG Microsoft Visual Studio 2010 25 Khởi động 25 Màn hình giao diện Windows forms 26 Các thao tác với Form 27 II Các control 29 Label ( TextBox ( ) 29 ) 30 Button ( ) 30 CheckBox ( ) 31 5.Phương thức MessageBox.Show 32 Lệnh dừng chương trình 32 Event (sự kiện) gì? 33 ListBox ( ComboBox ( ) 36 ) 37 10 RadioButton ( ) 38 11 GroupBox ( ) 38 Chương XÂY DỰNG LỚP - ĐỐI TƯỢNG 41 I- ĐỊNH NGHĨA LỚP 41 Định nghĩa lớp 41 Thuộc tính truy cập 43 Tham số phương thức 44 II TẠO ĐỐI TƯỢNG 45 Tạo đối tượng 45 Bộ khởi dựng 45 Khởi tạo biến thành viên 47 Từ khóa this 49 II SỬ DỤNG CÁC THÀNH VIÊN STATIC (static member) 50 Gọi phương thức tĩnh 50 Sử dụng khởi dựng tĩnh (static constructor) 51 3.Sử dụng khởi dựng cục (private) 52 Sử dụng thuộc tính tĩnh 52 IV HỦY ĐỐI TƯỢNG 53 Phương thức Finalize 53 2.Phương thức Dispose 54 3.Phương thức Close 54 V TRUYỀN THAM SỐ 54 Truyền tham chiếu 54 Truyền tham chiếu với biến chưa khởi tạo 56 VI NẠP CHỒNG PHƯƠNG THỨC 58 VII ĐÓNG GÓI DỮ LIỆU VỚI THUỘC TÍNH 61 Truy cập lấy liệu 62 Truy cập thiết lập liệu 63 VIII CẤU TRÚC 63 Làm việc với kiểu cấu trúc 63 Các kiểu cấu trúc phổ biến 63 Khai báo kiểu cấu trúc 64 Tìm hiểu khác lớp cấu trúc 65 Khai báo biến cấu trúc 67 Khởi tạo cấu trúc 67 Sao chép biến cấu trúc 68 8.Lớp Object 69 Chương SỰ KẾ THỪA VÀ ĐA HÌNH 73 I SỰ KẾ THỪA 73 Thực thi kế thừa 73 Gọi phương thức khởi dựng lớp sở 74 Điều khiển truy xuất 75 II ĐA HÌNH 76 Tạo kiểu đa hình 76 Tạo phương thức đa hình 76 Từ khóa new override 78 III LỚP TRỪU TƯỢNG (abstract class) 78 Phương thức trừu tượng 78 Lớp trừu tượng 79 Lớp cô lập (sealed class) 80 IV BOXING UNBOXING 81 Boxing Unboxing liệu 81 Boxing thực ngầm định 81 Unboxing phải thực tường minh 81 V CÁC LỚP LỒNG NHAU 82 VI GIAO DIỆN 83 Chương TOÁN TỬ VÀ CHUYỂN KIỂU 86 I.TOÁN TỬ 86 II QUÁ TẢI TOÁN TỬ 87 III.CHUYỂN KIỂU DO NGƯỜI DÙNG ĐỊNH NGHĨA 89 Chương SỰ ỦY NHIỆM, SỰ KIỆN, VÀ QUẢN LÝ LỖI 91 I.SỰ ỦY NHIỆM (delegate) 91 Khai báo sử dụng delegate 91 II Sự kiện (Event) 92 Khai báo kiện 92 Gán kiện 92 Bỏ gán kiện 92 Tạo kiện 92 III Quản lý lỗi biệt lệ 94 Những lớp biệt lệ lớp sở 94 Những lớp ngoại lệ 94 Đón bắt biệt lệ 94 Thực thi nhiều khối catch 96 Chương CHUỖI, BIỂU THỨC QUY TẮC VÀ TẬP HỢP 98 I SYSTEM.STRING (lớp đối tượng String) 98 Tạo chuỗi 98 Tạo chuỗi dùng phương thức ToString đối tượng 99 Thao tác chuỗi 99 II BIỂU THỨC QUY TẮC 105 III TẬP HỢP 106 Mảng ( Array) 106 2.Mảng đa chiều 110 Danh sách mảng (ArrayList) 112 Một số kiểu tập hợp khác 115 CHƯƠNG TRÌNH MƠN HỌC Tên mơn học: Lập trình visual C# Mã môn học: MH 17 Thời gian thực môn học: 75 giờ; (Lý thuyết: 15 giờ; Thực hành, thí nghiệm, thảo luận, tập: 55 giờ; Kiểm tra: giờ) I Vị trí, tính chất mơn học: - Vị trí: học sau mơn Kỹ thuật lập trình mơn học sở bắt buộc - Tính chất: mơn học chun mơn bắt buộc II Mục tiêu môn học: - Về kiến thức: + Hiểu kiến thức tảng Microsoft NET + Có kiến thức lập trình hướng đối tượng C# + Thao tác với đối tượng Net (Visual C#) - Về kỹ năng: + Có kỹ sử dụng Control + Có kỹ giao diện C# + Có kỹ lập trình hướng đối tượng C# + Có kỹ sử dụng lớp sở NET - Về lực tự chủ trách nhiệm: + Nghiêm túc, thực đầy đủ tập + Có ý thức tích cực tự nghiên cứu nội dung trước đến lớp III Nội dung mơn học: Chương 1: MICROSOFT.NET Mục tiêu: - Trình bày thành phần C# - Thực thao tác Visual C# Nội dung chương: I.GIỚI THIỆU NGÔN NGỮ C# Microsoft Visual C# ngôn ngữ mạnh mẽ đơn giản chủ yếu hướng đến nhà phát triển xây dựng ứng dụng tảng NET Microsoft C# kế thừa đặc trưng tốt ngôn ngữ C++ Microsoft Visual Basic Chương trình biên dịch theo hai bước: − Biên dịch mã nguồn thành IL (Intermediate Language) − Dùng CLR để biên dịch IL thành mã máy theo tảng thích hợp II.CÁC THÀNH PHẦN QUAN TRỌNG TRONG C# CLR (Common Language Runtime) CLR (Common Language Runtime-CLR) môi trường thực việc thực thi ứng dụng IL (Intermediate Language) Mã C# dịch sang IL trước thực thi Sau đặc tính IL: ·Hướng đối tượng dùng giao tiếp ·Sự tách biệt kiểu giá trị kiểu tham chiếu ·Định nghĩa kiểu mạnh Sử dụng thuộc tính ·Quản lý lỗi thơng qua ngoại lệ Thư viện (Assembly) Assembly tập tin chứa mã biên dịch sang NET Nó chứa nhiều tập tin Các assembly chứa siêu liệu (metadata) dùng để mô tả kiểu phương thức Các lớp NET Việc sử dụng thư viện lớp sở sẵn cho phép thao tác nhiều tác vụ sẵn có Windows Chúng ta tạo lớp từ lớp có sẵn thơng qua kế thừa Tạo ứng dụng NET sử dụng C# Các ứng dụng viết C#: ·Ứng dụng ASP.NET ·Ứng dụng WinForm ·Các dịch vụ dựa Windows 6.Tạo lưu project console Bước 1: Khởi động Visual Studio 2010 Start | All Programs | Microsoft Visual Studio 2010 | Microsoft Visual Studio 2010 -1- Bước 2: Vào menu File | New | Project Bước 3: Khai báo * Mặc định: Visual Studio 2010 (Visual Studio NET) tạo tập tin Program.cs chứa namespace tên ChaoMung namespace chứa class tên Program Bước 4: phương thức Main, gõ đoạn mã lệnh sau * Ví dụ: // Xuat man hinh chuoi thong bao 'Chao mung ban den voi C# 2010 ' System.Console.WriteLine("Chao mung ban den voi C# 2010 ") ; System.Console.ReadLine() ; Bước 5: Để chạy chương trình, nhấn F5 -2- 8.Giao diện ứng dụng Cửa sổ project Form Các điều khiển -3- Cửa sổ thuộc tính Chương CĂN BẢN C# Mục tiêu: - Trình bày cấu trúc C# - Viết câu lệnh đơn giản C# - Sử dụng câu lệnh, toán tử, biểu thức, biến C# để viết chương trình đơn giản Nội dung chương: Chương thảo luận hệ thống kiểu liệu, phân biệt kiểu liệu xây dựng sẵn (như int, bool, string…) với kiểu liệu người dùng định nghĩa (lớp hay cấu trúc người lập trình tạo ) Một số khác lập trình tạo sử dụng biến liệu hay đề cập với cấu trúc liệt kê, chuỗi, định danh, biểu thức cậu lệnh Hướng dẫn minh họa việc sử dụng lệnh phân nhánh if, switch, while, while, for, foreach Và toán tử phép gán, phép toán logic, phép toán quan hệ, toán học I-KIỂU DỮ LIỆU C# chia thành hai tập hợp kiểu liệu chính: Kiểu xây dựng sẵn (built- in) mà ngôn ngữ cung cấp cho người lập trình kiểu người dùng định nghĩa (userdefined) người lập trình tạo C# phân tập hợp kiểu liệu thành hai loại: Kiểu liệu giá trị (value) kiểu liệu tham chiếu (reference) − Tất kiểu liệu xây dựng sẵn kiểu liệu giá trị ngoại trừ đối tượng chuỗi − Tất kiểu người dùng định nghĩa ngoại trừ kiểu cấu trúc kiểu liệu tham chiếu 1.Kiểu liệu xây dựng sẵn Bảng sau mô tả số kiểu liệu xây dựng sẵn Kiểu C# Số byte Kiểu NET Mô tả byte Byte Số nguyên dương không dấu từ 0-255 char Char Ký tự Unicode bool Boolean Giá trị logic true/ false sbyte Sbyte Số nguyên có dấu ( từ -128 đến 127) short Int16 ushort Uịnt16 Số nguyên có dấu giá trị từ -32768 đến 32767 Số nguyên không dấu – 65.535 int Int32 Số nguyên có dấu uint Uint32 Số nguyên không dấu – 4.294.967.295 -4- –2.147.483.647 2.147.483.647 s8); Kết đưa là: S8 : Trung Tam Dao Tao nhan luc CNTT Thanh Ho Chi Minh Viet Nam Cuối cùng, kết hợp số phép tốn để thực việc chèn sau: string s9 = s3.Insert( s3.IndexOf( Console.WriteLine(“ S9 : {0}\n”, s9); “CNTT” ) , “nhan luc ”); Kết cuối tương tự cách chèn bên trên: S9 : Trung Tam Dao Tao nhan luc CNTT Thanh Ho Chi Minh Viet Nam Có vấn đề cần nói kiểu liệu string không thiết kế cho việc thêm vào chuỗi định dạng sẵn để tạo chuỗi vòng lặp trên, nên phải thêm vào ký tự Một lớp StringBuilder tạo để phục vụ cho nhu cầu thao tác chuỗi tốt II BIỂU THỨC QUY TẮC Biểu thức qui tắc ngôn ngữ mạnh dùng để mô tả thao tác văn Một biểu thức qui tắc thường áp dụng cho chuỗi, hay tập hợp ký tự Thông thường chuỗi toàn văn hay tài liệu Kết việc áp dụng biểu thức qui tắc đến chuỗi trả chuỗi trả chuỗi bổ sung từ vài phần chuỗi nguyên thủy ban đầu Chúng ta nên nhớ string thay đổi khơng thể thay đổi biểu thức qui tắc Bằng cách áp dụng xác biểu thức qui tắc cho chuỗi sau: Mot, hai, ba, Trung Tam Dao Tao CNTT trả hay tất danh sách chuỗi (Mot, hai, ) tạo phiên chuỗi bổ sung chuỗi (như : TrUng TAM, ) Biểu thức qui tắc định cú pháp ký tự qui tắc thân Một biểu thức qui tắc bao gồm hai kiểu ký tự: ▪ Ký tự bình thường (literal): ký tự mà sử dụng để so khớp với chuỗi ký tự đích ▪ Metacharacter: biểu tượng đặc biệt, có hành động lệnh phân tích (parser) biểu thức Bộ phân tích chế có trách nhiệm hiểu biểu thức qui tắc Ví dụ tạo biểu thức qui tắc sau: ^(From|To|Subject|Date): Biểu thức so khớp với chuỗi với từ “From”, “To”, “Subject”, “Date” miễn từ bắt đầu ký tự dòng (^) kết thúc với dấu hai chấm (:) Ký hiệu dấu mũ (^) trường hợp cho phân tích biểu thức qui tắc chuỗi mà muốn tìm kiếm phải dịng Trong biểu thức ký tự “(”,”)”, “|” metacharacter dùng để nhóm chuỗi ký tự bình thường “From”, “To”,”Subject”, “Date” lựa chọn số so khớp Ngồi ký tự “^” 105 ký tự metacharacter bắt đầu dịng Tóm lại với chuỗi biểu thức qui tắc như: ^(From|To|Subject|Date): ta phát biểu theo ngôn ngữ tự nhiên sau: “Phù hợp với chuỗi bắt đầu dòng theo sau bốn chữ From, To, Subject, Date theo sau ký tự dấu hai chấm” III TẬP HỢP Môi trường NET cung cấp đa dạng số lượng lớp tập hợp, bao gồm: Array,ArrayList, Queue, Stack, BitArray, NameValueCollection, StringCollection Trong số tập hợp đơn giản Array, kiểu liệu tập hợp mà ngôn ngữ C# hỗ trợ xây dựng sẵn .NET cung cấp nhiều giao diện, IEnumerable ICollection Những phần thực thi giao diện cung cấp tiêu chuẩn để tương tác với tập hợp Mảng ( Array) Mảng tập hợp có thứ tự đối tượng kiểu Ngôn ngữ C# cung cấp cú pháp chuẩn cho việc khai báo đối tượng kiểu System.Array Một số thuộc tính phương thức lớp System.Array Thành viên Mô tả BinarySearch() Clear() Copy() IndexOf() LastIndexOf() Reverse() Sort() IsFixedSize IsReadOnly IsSynchronized Phương thức tĩnh public tìm kiếm mảng chiều thứ tự Phương thức tĩnh public thiết lập thành phần mảng hay null Phương thức tĩnh public nạp chồng thực chép vùng mảng vào mảng khác Phương thức tĩnh public trả mục thể chứa giá trị mảng chiều Phương thức tĩnh public trả mục thể cuối giá trị mảng chiều Phương thức tĩnh public đảo thứ tự thành phần mảng chiều Phương thức tĩnh public xếp giá trị mảng chiều Thuộc tính public giá trị bool thể mảng có kích thước cố định hay khơng Thuộc tính public giá trị bool thể mảng đọc hay khơng Thuộc tính public giá trị bool thể mảng có hỗ trợ thread-safe 106 Length Thuộc tính public chiều dài mảng Rank Thuộc tính public chứa số chiều mảng GetLength() Phương thức public trả kích thước chiều cố định mảng Phương thức public trả cận chiều xác định mảng Phương thức public trả cận chiều xác định mảng Khởi tạo tất giá trị mảng kiểu giá trị cách gọi khởi dụng mặc định giá trị Phương thức public thiết lập giá trị cho thành phần xác định mảng GetLowerBound() GetUpperBound() Initialize() SetValue() 1.1 Khai báo mảng Chúng ta khai báo mảng C# với cú pháp theo sau: [] Ví dụ ta có khai báo sau: int[] myIntArray; Trong ví dụ bên myIntArray khai báo mảng số nguyên Chúng ta tạo thể mảng cách sử dụng từ khóa new sau: myIntArray = new int[6]; Khai báo thiết lập bên nhớ mảng chứa sáu số nguyên 1.2 Giá trị mặc định Khi tạo mảng có kiểu liệu giá trị, thành phần chứa giá trị mặc định kiểu liệu Với khai báo: myIntArray = new int[5]; tạo mảng năm số nguyên, thành phần thiết lập giá trị mặc định 0, giá trị mặc định số nguyên Không giống với mảng kiểu liệu giá trị, kiểu tham chiếu mảng không khởi tạo giá trị mặc định Thay vào đó, chúng khởi tạo giá trị null Nếu cố truy cập đến thành phần mảng kiểu liệu tham chiếu trước chúng khởi tạo giá trị xác định, tạo ngoại lệ 1.3 Truy cập thành phần mảng Để truy cập vào thành phần mảng ta sử dụng tốn tử mục ([]) Mảng dùng sở 0, mục thành phần mảng ln Như ví dụ trước thành phần myArray[0] Một thuộc tính hay sử dụng Length, thuộc tính báo cho biết số đối tượng mảng Một mảng đánh mục từ đến Length –1 Do có năm thành phần mảng mục là: 0, 1, 2, 3, Ví dụ minh họa việc sử dụng khái niệm mảng từ đầu chương tới 107 Trong ví dụ lớp tên Tester tạo mảng kiểu Employee mảng số nguyên Tạo đối tượng Employee sau in hai mảng hình namespace Programming_CSharp { using System; // tạo lớp đơn giản để lưu trữ mảng public class Employee { // khởi tạo lấy tham số public Employee( int empID ) { this.empID = empID; } public override string ToString() { return empID.ToString(); } // biến thành viên private private int empID; private int size; } public class Tester { static void Main() { int[] intArray; Employee[] empArray; intArray = new int[5]; empArray = new Employee[3]; // tạo đối tượng đưa vào mảng for( int i = 0; i < empArray.Length; i++) { empArray[i] = new Employee(i+5); } // xuất mảng nguyên for( int i = 0; i < intArray.Length; i++) { Console.Write(intArray[i].ToString()+”\t”); } // xuất mảng Employee for( int i = 0; i < empArray.Length; i++) { Console.WriteLine(empArray[i].ToString()+”\t”); } } } } - Kết quả: 0 0 1.4 Khởi tạo thành phần mảng Chúng ta khởi tạo nội dung mảng lúc tạo thể mảng cách đặt giá trị bên dấu ngoặc ({}) C# cung cấp hai cú 108 pháp để khởi tạo thành phần mảng, cú pháp dài cú pháp ngắn: int[] myIntArray = new int[5] { 2, 4, 6, 8, 10}; int[] myIntArray = { 2, 4, 6, 8, 10}; Khơng có khác biệt hai cú pháp trên, hầu hết chương trình sử dụng cú pháp ngắn tự nhiên lười đánh nhiều lệnh người lập trình 1.5 Sử dụng từ khóa params Chúng ta tạo phương thức sau hiển thị số nguyên hình console cách truyền vào mảng số nguyên sử dụng vòng lặp foreach để duyệt qua thành phần mảng Từ khóa params cho phép truyền số biến tham số mà khơng cần thiết phải tạo mảng Trong ví dụ kế tiếp, tạo phương thức tên DisplayVals(), phương thức lấy số biến tham số nguyên: public void DisplayVals( params int[] intVals) Phương thức xem mảng thể mảng tạo tường minh truyền vào tham số Sau tự lặp qua thành phần mảng giống thực với mảng nguyên khác: foreach (int i in intVals) { Console.WriteLine(“DisplayVals: {0}”, i); } Tuy nhiên, phương thức gọi không cần thiết phải tạo tường minh mảng, đơn giản truyền vào số nguyên, trình biên dịch kết hợp tham số vào mảng cho phương thức DisplayVals, ta gọi phương thức sau: t.DisplayVals(5,6,7,8); tự tạo mảng để truyền vào phương thức muốn: int [] explicitArray = new int[5] {1,2,3,4,5}; t.DisplayArray(explicitArray); Ví dụ cung cấp tất mã nguồn để minh họa sử dụng cú pháp params namespace Programming_CSharp { using System; public class Tester { static void Main() { Tester t = new Tester(); t.DisplayVals(5,6,7,8); int[] explicitArray = new int[5] {1,2,3,4,5}; t.DisplayVals(explicitArray); } public void DisplayVals( params int[] intVals) { foreach (int i in intVals) { Console.WriteLine(“DisplayVals {0}”, i); 109 } } } } - Kết quả: DisplayVals DisplayVals DisplayVals DisplayVals DisplayVals DisplayVals DisplayVals DisplayVals DisplayVals 2.Mảng đa chiều Mảng chiều thành phần đơn giản đối tượng kiểu giá trị hay đối tượng tham chiếu Mảng tổ chức phức tạp thành phần mảng khác, việc tổ chức gọi mảng đa chiều Mảng hai chiều tổ chức thành dịng cột, dịng tính theo hàng ngang mảng, cột tính theo hàng dọc mảng Mảng ba chiều tạo thường sử dụng khó hình dung Trong mảng ba chiều dịng mảng hai chiều Ngơn ngữ C# hỗ trợ hai kiểu mảng đa chiều là: ▪ Mảng đa chiều kích thước: mảng dịng mảng có kích thước với Mảng hai hay nhiều hai chiều ▪ Mảng đa chiều khơng kích thước: mảng dịng khơng kích thước với 2.1 Mảng đa chiều kích thước Mảng đa chiều kích thước cịn gọi mảng hình chữ nhật (rectanguler array) Trong mảng hai chiều, chiều tính số dịng mảng chiều thứ hai tính số cột mảng Để khai báo mảng hai chiều, sử dụng cú pháp theo sau: [,] Ví dụ để khai báo mảng hai chiều có tên myRectangularArray để chứa hai dòng ba cột số nguyên, viết sau: int [ , ] myRectangularArray; 2.2 Mảng đa chiều có kích khác Cũng giới thiệu trước kích thước chiều khơng nhau, điều khác với mảng đa chiều kích thước Nếu hình dạng mảng đa 110 chiều kích thước có dạng hình chữ nhật hình dạng mảng khơng phải hình chữ nhật chiều chúng không điều Khi tạo mảng đa chiều kích thước khác khai báo số dịng mảng trước Sau với dịng giữ mảng, có kích thước Những mảng khai báo riêng Sau khởi tạo giá trị thành phần mảng bên Trong mảng này, chiều mảng chiều Để khai báo mảng đa chiều có kích thước khác ta sử dụng cú pháp sau, số ngoặc số chiều mảng: [] [] Ví dụ, khai báo mảng số nguyên hai chiều khác kích thước tên myJagged- Array sau: int [] [] myJaggedArray; Chúng ta truy cập thành phần thứ năm mảng thứ ba cú pháp: myJagged- Array[2][4] Ví dụ Sử dụng Array.Sort() Array.Reverse() namespace Programming_CSharp { using System; public class Tester { public static void PrintArray(object[] theArray) { foreach( object obj in theArray) { Console.WriteLine(“Value: {0}”, obj); } Console.WriteLine(“\n”); } static void Main() { string[] myArray = { “Who”, “is”,”Kitty”,”Mun” }; PrintArray( myArray ); Array.Reverse( myArray ); PrintArray( myArray ); string[] myOtherArray = {“Chung”, “toi”, “la”, “nhung”,”nguoi”,”lap”,”trinh”, “may”, “tinh” }; PrintArray( myOtherArray ); Array.Sort( myOtherArray ); PrintArray( myOtherArray ); } } } 111 Kết quả: Value: Who Value: is Value: Kitty Value: Mun Value: Mun Value: Kitty Value: is Value: Who Value: Chung Value: toi Value: la Value: nhung Value: nguoi Value: lap Value: trinh Value: may Value: tinh Value: Chung Value: la Value: lap Value: may Value: nguoi Value: nhung Value: tinh Value: toi Value: trinh Danh sách mảng (ArrayList) Một vấn đề hạn chế kiểu liệu mảng kích thước cố định Nếu trước số lượng đối tượng mảng lưu giữ, khó khăn khai báo kích thước mảng nhỏ (vượt kích thước lưu trữ mảng) kích thước lớn (dẫn đến lãng phí nhớ) Lớp ArrayList kiểu liệu mảng mà kích thước gia tăng cách động theo yêu cầu ArrayList cung cấp số phương thức thuộc tính cho thao tác liên quan đến mảng Một vài phương thức thuộc tính quan trọng ArrayList liệt kê bảng sau: Phương thứcMục đích thuộc tính Adapter() Phương thức static tạo wrapper ArrayList cho đối tượng IList FixedSize() Phương thức static nạp chồng trả sanh sách đối tượng wrapper Danh sách có kích thước cố định, thành phần sửa chữa khơng thể thêm hay xóa ReadOnly() Phương thức static nạp chồng trả danh sách lớp wrapper, cho phép đọc Repeat() Phương thức static trả ArrayList mà thành phần chép với giá trị xác định Synchronized() Phương thức static trả danh sách wrapper threadsafe Capacity Thuộc tính để get hay set số thành phần ArrayList Count Thuộc tính nhận số thành phần thời mảng IsFixedSize Thuộc tính kiểm tra xem kích thước ArrayList có cố định hay khơng Thuộc tính kiểm tra xem ArrayList có thuộc tính đọc hay khơng Thuộc tính kiểm tra xem ArrayList có thread-safe hay không Thiết lập hay truy cập thành phần mảng vị trí xác định Đây mục cho lớp ArrayList Thuộc tính trả đối tượng sử dụng để đồng IsReadOnly IsSynchronized Item() SyncRoot 112 truy cập đến ArrayList Add() Phương thức public để thêm đối tượng vào arrayList AddRange() Clear() Phương thức public để thêm nhiều thành phần ICollection vào cuối ArrayList Phương thức nạp chồng public sử dụng tìm kiếm nhị phận để định vị thành phần xác định ArrayList xếp Xóa tất thành phần từ ArrayList Clone() Tạo copy Contains() Kiểm tra thành phần xem có chứa mảng hay khơng Phương thức public nạp chồng để chép ArrayList đến mảng chiều Phương thức public nạp chồng trả enumerator dùng để lặp qua mảng Sao chép dãy thành phần đến ArrayList BinarySearch() CopyTo() GetEnumerator() GetRange() Insert() Phương thức public nạp chồng trả mục vị trí xuất giá trị Chèn thành phần vào ArrayList InsertRange(0 Chèn dãy tập hợp vào ArrayList LastIndexOf() Remove() Phương thức public nạp chồng trả mục trị trí cuối xuất giá trị Xóa xuất đối tượng xác định RemoveAt() Xóa thành phần vị trí xác định RemoveRange() Xóa dãy thành phần Reverse() Đảo thứ tự thành phần mảng SetRange() Sao chép thành phần tập hợp qua dãy thành phần ArrayList Sắp xếp ArrayList IndexOf() Sort() ToArray() TrimToSize() Sao chép thành phần ArrayList đến mảng Thiết lập kích thước thật chứa thành phần ArrayList Khi tạo đối tượng ArrayList, không cần thiết phải định nghĩa số đối tượng mà chứa Chúng ta thêm vào ArrayList cách dùng phương thức Add(), danh sách quan lý đối tượng bên mà lưu giữ Ví dụ sau 113 minh họa sử dụng ArrayList namespace Programming_CSharp { using System; using System.Collections; // lớp đơn giản để lưu trữ mảng public class Employee { public Employee(int empID) { this.empID = empID; } public override string ToString() { return empID.ToString(); } public int EmpID { get{ return empID;} set{empID = value;} } private int empID; } public class Tester { static void Main() { ArrayList empArray = new ArrayList(); ArrayList intArray = new ArrayList(); // đưa vào mảng for( int i = 0; i < 5; i++) { empArray.Add( new Employee(i+100)); intArray.Add( i*5 ); } // in tất nội dung for(int i = 0; i < intArray.Count; i++) { Console.Write(“{0} ”,intArray[i].ToString()); } Console.WriteLine(“\n”); // in tất nội dung mảng for(int i = 0; i < empArray.Count; i++) { Console.Write(“{0} ”,empArray[i].ToString()); } Console.WriteLine(“\n”); Console.WriteLine(“empArray.Count: {0}”, empArray.Count); Console.WriteLine(“empArray.Capacity: {0}”, empArray.Capacity); } } } 114 - Kết quả: 100 10 15 20 101 102 103 104 empArray.Count: empArray.Capacity: 16 Một số kiểu tập hợp khác − Hàng đợi (Queue) Hàng đợi tập hợp có thứ tự vào trước trước (FIFO) Hàng đợi kiểu liệu tốt để quản lý nguồn tài nguyên giới hạn Ví dụ, muốn gởi thông điệp đến tài nguyên mà xử lý thông điệp lần Khi thiết lập hàng đợi thông điệp để xử lý thông điệp theo thứ tự đưa vào Lớp Queue thể kiểu liệu − Ngăn xếp (stack) Ngăn xếp tập hợp mà thứ tự vào trước sau hay vào trước (LIFO), Hai phương thức cho việc thêm xóa từ stack Push Pop, ngăn xếp đưa phương thức Peek tương tự Peek hàng đợi Phương thứcMục đích thuộc tính Pop() Xóa trả phần tử đầu Stack Push() Đưa đối tượng vào đầu ngăn xếp Peek() Trả phần tử ngăn xếp khơng xóa − Kiểu từ điển Từ điển kiểu tập hợp có hai thành phần liên hệ với khóa giá trị Thuộc tính quan trọng từ điển tốt dễ thêm giá trị vào, nhanh chóng truy cập đến giá trị Một vài từ điển nhanh thời gian thêm giá trị vào, số khác tối ưu cho việc truy cập Một minh họa cho kiểu từ điển kiểu liệu hashtable hay gọi bảng băm − Bộ mục Bộ mục chế cho phép thành phần client truy cập tập hợp chứa bên lớp cách sử dụng cú pháp giống truy cập mảng ([ ]) Chỉ mục loại thuộc tính đặc biệt bao gồm phương thức get() set() để xác nhận hành vi chúng Ví dụ tập hợp 115 116 117 118 Tài liệu tham khảo Lập trình Windows với C#.Net, Tác giả: Phương Lan – Hoàng Đức Hải, Nhà xuất bản: Lao động – xã hội C# bản, tác giả Dương Quang Thiện Bài giảng tóm tắt Lập trình hướng đối tượng , tác giả Trần Thống, Đại học Đà Lạt Lập trình C# 2008 bản, trường Nhất Nghệ, 2010 119 ... bị c? ?? định (neo) BackC Màu control Ancho r olor Là khoảng c? ?ch theo chiều d? ?c từ c? ??nh đáy control đến c? ??nh control chứa Dock Giống Anchor vi? ?c cố định (neo) theo c? ??nh control (ho? ?c cạnh) với control... - Chọn c? ?ng c? ?? - Rê chuột vẽ Button form c Thu? ?c tính: Thu? ?c Mơ tả tính Text Nhập nội dung vào Button CheckBox ( ) a C? ?ng dụng: - Cho phép người dùng chọn không chọn b Tạo CheckBox: - Chọn c? ?ng... dụng C? ??a sổ project Form C? ?c điều khiển -3- C? ??a sổ thu? ?c tính Chương C? ?N BẢN C# M? ?c tiêu: - Trình bày c? ??u tr? ?c C# - Viết c? ?u lệnh đơn giản C# - Sử dụng c? ?u lệnh, toán tử, biểu th? ?c, biến C# để