Mục Lục
1. Microsoft .NET............................................................................................... 10
Tình hình trước khi MS.NET ra đời........................................................ 10
Nguồn gốc của .NET................................................................................12
Microsoft .NET........................................................................................12
Tổng quan................................................................................................ 12
Kiến trúc .NET Framework..................................................................... 13
Common Language Runtime................................................................... 15
Thư viện .NET Framework......................................................................16
Phát triển ứng dụng client........................................................................ 16
Biên dịch và MSIL...................................................................................17
Ngôn ngữ C#............................................................................................18
2. Ngôn ngữ C#.................................................................................................... 20
Tại sao phải sử dụng ngôn ngữ C#...........................................................20
C# là ngôn ngữ đơn giản..........................................................................20
C# là ngôn ngữ hiện đại........................................................................... 21
C# là ngôn ngữ hướng đối tượng............................................................. 21
C# là ngôn ngữ mạnh mẽ......................................................................... 22
C# là ngôn ngữ ít từ khóa.........................................................................22
C# là ngôn ngữ module hóa..................................................................... 22
C# sẽ là ngôn ngữ phổ biến......................................................................22
Ngôn ngữ C# với ngôn ngữ khác.............................................................23
Các bước chuẩn bị cho chương trình....................................................... 24
Chương trình C# đơn giản....................................................................... 25
Phát triển chương trình minh họa.............................................................31
Câu hỏi & bài tập..................................................................................... 35
3. Nền tảng ngôn ngữ C#..................................................................................39
Kiểu dữ liệu..............................................................................................40
Kiểu dữ liệu xây dựng sẵn....................................................................... 41
Chọn kiểu dữ liệu.....................................................................................42
Chuyển đổi kiểu dữ liệu........................................................................... 43
Biến và hằng............................................................................................ 44
Gán giá trị xác định cho biến................................................................... 45
Hằng.........................................................................................................46
Kiểu liệt kê...............................................................................................47
2
Ngôn Ngữ Lập Trình C#
Kiểu chuỗi ký tự.......................................................................................50
Định danh.................................................................................................50
Biểu thức..................................................................................................50
Khoảng trắng............................................................................................51
Câu lệnh................................................................................................... 51
Phân nhánh không có điều kiện............................................................... 52
Phân nhánh có điều kiện.......................................................................... 53
Câu lệnh lặp............................................................................................. 60
Toán tử..................................................................................................... 68
Namespace............................................................................................... 76
Các chỉ dẫn biên dịch...............................................................................80
Câu hỏi & bài tập..................................................................................... 82
4. Xây dựng lớp - Đối tượng............................................................................87
Định nghĩa lớp......................................................................................... 88
Thuộc tính truy cập.................................................................................. 91
Tham số của phương thức........................................................................92
Tạo đối tượng...........................................................................................93
Bộ khởi dựng............................................................................................93
Khởi tạo biến thành viên..........................................................................96
Bộ khởi dựng sao chép.............................................................................98
Từ khóa this............................................................................................. 99
Sử dụng các thành viên static...................................................................100
Gọi phương thức static.............................................................................101
Sử dụng bộ khởi dựng static.................................................................... 101
Sử dụng bộ khởi dựng private..................................................................102
Sử dụng thuộc tính static..........................................................................102
Hủy đối tượng.......................................................................................... 104
Truyền tham số.........................................................................................107
Nạp chồng phương thức...........................................................................112
Đóng gói dữ liệu với thuộc tính............................................................... 116
Thuộc tính chỉ đọc................................................................................... 119
Câu hỏi & bài tập..................................................................................... 121
5. Kế thừa – Đa hình..........................................................................................125
Đặc biệt hóa và tổng quát hóa..................................................................126
Sự kế thừa................................................................................................ 129
Thực thi kế thừa....................................................................................... 129
Gọi phương thức khởi dựng của lớp cơ sở...............................................131
Gọi phương thức của lớp cơ sở................................................................132
3
Ngôn Ngữ Lập Trình C#
Điều khiển truy xuất.................................................................................132
Đa hình.....................................................................................................133
Kiểu đa hình.............................................................................................133
Phương thức đa hình................................................................................ 133
Từ khóa new và override......................................................................... 137
Lớp trừu tượng.........................................................................................139
Gốc của tất cả các lớp- lớp Object........................................................... 142
Boxing và Unboxing dữ liệu....................................................................144
Boxing dữ liệu ngầm định........................................................................144
Unboxing phải thực hiện tường minh...................................................... 145
Các lớp lồng nhau.................................................................................... 147
Câu hỏi & bài tập..................................................................................... 149
6. Nạp chồng toán tử..........................................................................................153
Sử dụng từ khóa operator.........................................................................153
Hỗ trợ ngôn ngữ .NET khác.....................................................................154
Sử dụng toán tử........................................................................................154
Toán tử so sánh bằng............................................................................... 156
Toán tử chuyển đổi...................................................................................157
Câu hỏi & bài tập..................................................................................... 163
7. Cấu trúc............................................................................................................. 165
Định nghĩa một cấu trúc...........................................................................165
Tạo cấu trúc..............................................................................................168
Cấu trúc là một kiểu giá trị...................................................................... 168
Gọi bộ khởi dựng mặc định..................................................................... 169
Tạo cấu trúc không gọi new.....................................................................170
Câu hỏi & bài tập..................................................................................... 172
8. Thực thi giao diện.......................................................................................... 176
Thực thi giao diện.................................................................................... 177
Thực thi nhiều giao diện.......................................................................... 180
Mở rộng giao diện....................................................................................181
Kết hợp các giao diện...............................................................................181
Truy cập phương thức giao diện.............................................................. 187
Gán đối tượng cho giao diện....................................................................187
Toán tử is................................................................................................. 188
Toán tử as.................................................................................................190
Giao diện đối lập với trừu tượng..............................................................192
Thực thi phủ quyết giao diện................................................................... 193
Thực thi giao diện tường minh.................................................................197
4
Ngôn Ngữ Lập Trình C#
Lựa chọn thể hiện phương thức giao diện................................................200
Ẩn thành viên...........................................................................................200
Câu hỏi & bài tập..................................................................................... 207
9. Mảng, chỉ mục, và tập hợp......................................................................... 211
Mảng........................................................................................................ 212
Khai báo mảng......................................................................................... 213
Giá trị mặc định....................................................................................... 214
Truy cập các thành phần trong mảng....................................................... 214
Khởi tạo thành phần trong mảng..............................................................216
Sử dụng từ khóa params...........................................................................216
Câu lệnh foreach...................................................................................... 218
Mảng đa chiều..........................................................................................220
Mảng đa chiều cùng kích thước............................................................... 220
Mảng đa chiều có kích thước khác nhau..................................................224
Chuyển đổi mảng..................................................................................... 227
Bộ chỉ mục............................................................................................... 232
Bộ chỉ mục và phép gán...........................................................................236
Sử dụng kiểu chỉ số khác......................................................................... 237
Giao diện tập hợp.....................................................................................241
Giao diện IEnumerable...................................................................... 242
Giao diện ICollection.........................................................................246
Danh sách mảng.......................................................................................247
Thực thi IComparable........................................................................ 251
Thực thi IComparer........................................................................... 254
Hàng đợi...................................................................................................259
Ngăn xếp.................................................................................................. 262
Kiểu từ điển..............................................................................................265
Hastables.......................................................................................... 266
Giao diện IDictionary.........................................................................267
Tập khóa và tập giá trị.....................................................................269
Giao diện IDictionaryEnumerator....................................................... 270
Câu hỏi & bài tập..................................................................................... 271
10. Xử lý chuỗi..................................................................................................... 275
Lớp đối tượng string................................................................................ 276
Tạo một chuỗi.......................................................................................... 276
Tạo một chuỗi dùng phương thức ToString.............................................277
Thao tác trên chuỗi...................................................................................278
Tìm một chuỗi con...................................................................................285
5
Ngôn Ngữ Lập Trình C#
Chia chuỗi................................................................................................ 286
Thao tác trên chuỗi dùng StringBuilder...................................................288
Các biểu thức quy tắc...............................................................................290
Sử dụng biểu thức quy tắc qua lớp Regex................................................291
Sử dụng Regex để tìm tập hợp.................................................................294
Sử dụng Regex để gom nhóm..................................................................295
Sử dụng CaptureCollection......................................................................298
Câu hỏi & bài tập..................................................................................... 301
11. Cơ chế ủy quyền và sự kiện......................................................................303
Ủy quyền.................................................................................................. 304
Sử dụng ủy quyền xác nhận phương thức lúc thực thi.............................304
Ủy quyền tĩnh...........................................................................................314
Dùng ủy quyền như thuộc tính.................................................................315
Thiết lập thứ tự thi hành với mảng ủy quyền........................................... 316
Multicasting............................................................................................. 320
Sự kiện..................................................................................................... 324
Cơ chế publishing- subscribing................................................................324
Sự kiện và ủy quyền.................................................................................325
Câu hỏi & bài tập..................................................................................... 333
12. Các lớp cơ sở .NET......................................................................................335
Lớp đối tượng trong .NET Framework....................................................335
Lớp Timer................................................................................................ 337
Lớp về thư mục và hệ thống.................................................................... 340
Lớp Math..................................................................................................342
Lớp thao tác tập tin.................................................................................. 345
Làm việc với tập tin dữ liệu..................................................................... 351
Câu hỏi & bài tập..................................................................................... 362
13. Xử lý ngoại lệ.................................................................................................364
Phát sinh và bắt giữ ngoại lệ.................................................................... 365
Câu lệnh throw.........................................................................................365
Câu lệnh catch..........................................................................................367
Câu lệnh finally........................................................................................373
Những đối tượng ngoại lệ........................................................................ 375
Tạo riêng các ngoại lệ.............................................................................. 378
Phát sinh lại ngoại lệ................................................................................ 381
Câu hỏi & bài tập..................................................................................... 385