C# and .NET Framework Bài 3: Lập trình nâng cao trong C# Đoàn Quang Minh minhdqtt@gmail.com http://www.VTPortal.net Last update: 21. Dec 2006 Lập trình nâng cao trong C# - Editor: trì Editor: Đoàn Quang Minh Đoà 1 Mục lục Exceptions User-Defined Casts Delegates Events Generics Preprocessor Directive Unsafe code Lập trình nâng cao trong C# - Editor: trì Editor: Đoàn Quang Minh Đoà 2 Errors and Exception Handling Lỗi luôn luôn tồn tại, cho dù hệ thống được thiết kế tốt thế nào – – – – – – Lỗi không được quyền truy cập Lỗi do thiết bị hỏng (đía lỗi) Lỗi do đường truyền mạng hỏng Khi một lỗi...
C# and NET Framework Bài 3: Lập trình nâng cao C# Đoàn Quang Minh minhdqtt@gmail.com http://www.VTPortal.net Last update: 21 Dec 2006 Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Mục lục Exceptions User-Defined Casts Delegates Events Generics Preprocessor Directive Unsafe code Lập trì trình nâng cao C# - Editor: Editor: Đồ Đồn Quang Minh Errors and Exception Handling Lỗi ln tồn tại, cho dù hệ thống thiết kế tốt – – – Lỗi không quyền truy cập Lỗi thiết bị hỏng (đía lỗi) Lỗi đường truyền mạng hỏng Khi lỗi xuất hiện, NET ném ngoại lệ – Các ngoại lệ kế thừa từ lớp Exception – Tất ngoại lệ cung cấp NET – Nếu gặp lỗi, nên ném ngoại lệ đặc biệt có mơ tả thơng tin rõ ràng ngoại lệ – Nếu khơng tìm lớp ngoại lệ phù hợp, xây dựng lớp ngoại lệ riêng Lập trì trình nâng cao C# - Editor: Editor: Đồ Đồn Quang Minh Errors and Exception Handling Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Errors and Exception Handling try { … } catch (Exception e) { … } finally { … } Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Errors and Exception Handling Phần try thực thi lệnh bình thường Phần catch xử lý ngoại lệ xuất – Nếu khơng sử dụng ngoại lệ ném ra, bỏ qua phần đối tượng – Có thể có nhiều phần catch khối try catch, phần catch xử lý ngoại lệ khác – Ngoại lệ ném lại từ khóa throw Phần finally thực thi lệnh kết thúc khối lệnh Ví dụ việc xử lý tập tin – – – Phần try thực thi lệnh mở file, đọc ghi bình thường Phần catch xử lý lỗi Phần finally, file mở phải đóng lại Lập trì trình nâng cao C# - Editor: Editor: Đồ Đồn Quang Minh User-Defined Casts Tốn tử ép kiểu as Chúng ta thường xuyên phải ép kiểu C# – Có loại ép kiểu C#: implicit (an tồn tuyệt đối), explicit(có rủi ro) – Có thể ép kiểu từ lớp kế thừa lớp sở, song khơng thể làm ngược lại – Có thể ép kiểu qua lại lớp, cần khai báo hàm ép kiểu public static implicit operator conv-type-out ( convtype-in operand ) public static explicit operator conv-type-out ( convtype-in operand ) Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Delegates delegate – Có cơng việc khơng xác định lúc biên dịch, xác định lúc thực thi – Các thuật tốn tổng qt, ví dụ xếp: khơng thể định nghĩa phương thức so sánh đối tượng – delegate kiểu tham chiếu, giống class (trong C#), ý nghĩa giống trỏ hàm C++ [attributes] [modifiers] delegate result-type identifier ([formal-parameters]); Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Delegates delegate void MyDelegate(int i); class Program { public static void Main() { TakesADelegate(new MyDelegate(DelegateFunction)); } public static void TakesADelegate(MyDelegate SomeFunction) { SomeFunction(21); } public static void DelegateFunction(int i) { System.Console.WriteLine("Called by delegate with number: {0}.", i); } } Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Events Sự kiện – – – Được sử dụng để báo hiệu điều xảy Trong Windows, có nhiều kiện Trong C#, event dạng đặc biệt delegate [attributes] [modifiers] event type declarator; [attributes] [modifiers] event type member-name {accessor-declarations}; Phát sinh kiện – Định nghĩa tham số kiện, đặt tên EventNameEventArgs, kế thừa từ System.EventArgs – Định nghĩa delegates cho kiện, đặt tên EventNameEventHandler – Phát sinh kiện Khai báo kiện Khai báo phương thức OnEventName để phát sinh kiện Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 10 Events Xử lý kiện – Nếu component phát sinh kiện, bắt xử lý kiện – Để hander kiện Windows Form Web Form: Khai báo component (ví dụ button) Khai báo hàm xử lý kiện Gắn hàm vào kiện Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 11 Generics Generics – Cho phép class, struct, interface, method sử dụng kiểu liệu mà lưu trữ tham số đầu vào – Khái niệm giống template C++ – Generics xuất nhằm mục đích xử lí xác kiểu liệu Ví dụ, với stack, khơng có generics liệu coi object, nên địi hỏi phải ép kiểu xử lí, điều gây lỗi run-time Tạo sử dụng Generics – Khai báo giống template C++: dùng cặp dấu < > – Sử dụng: phải định xác kiểu liệu Lập trì trình nâng cao C# - Editor: Editor: Đồ Đồn Quang Minh 12 Generics Ví dụ sử dụng Generics – Khai báo: public class Stack { private ItemType[] items = new ItemType[100]; public void Push(ItemType data) {…} public ItemType Pop() {…} } – Sử dụng Stack s = new Stack(); s.Push(3); int x = s.Pop(); Lập trì trình nâng cao C# - Editor: Editor: Đồ Đoàn Quang Minh 13 Preprocessor Directives #define and #undef #if, #elif, #else, and #endif #warning and #error #region and #endregion #line Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 14 Memory Management C# tự động quản lý nhớ nhờ vào thu gom rác – Bộ nhớ ảo Windows – Stack heap Có loại kiểu liệu C# – Value Data Types: Dữ liệu chứa nơi cấp phát vùng nhớ Các kiểu số, bool, char, date, cấu trúc, kiểu liệt kê – Reference Data Types: Chứa trỏ trỏ tới nơi cất giữ liệu Bao gồm kiểu string, mảng, class, delegate Lập trì trình nâng cao C# - Editor: Editor: Đồ Đoàn Quang Minh 15 Unsafe Code C# tự quản lý nhớ, nhiên có lúc cần sử dụng trỏ – Dùng từ khóa unsafe vùng lệnh muốn sử dụng trỏ – Phải có tham số biên dịch unsafe dịch chương trình Con trỏ: – Các khai báo sử dụng tương tự C++ Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 16 Tài liệu tham khảo Professional C#, Second Edition http://www.asp.net http://www.microsoft.com/net/default.mspx http://www.codeproject.com Địa download tài liệu http://www.thanglong.edu.vn/giang-day/tab.aspx Diễn đàn C# & NET http://www.thanglong.edu.vn/forum/cmd/0/categ ory/hoc-tap-nghien-cuu/dot-net/tab.aspx Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 17 ... riêng Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Errors and Exception Handling Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Errors and Exception Handling... s.Pop(); Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh 13 Preprocessor Directives #define and #undef #if, #elif, #else, and #endif #warning and #error #region and #endregion #line Lập. .. number: {0}.", i); } } Lập trì trình nâng cao C# - Editor: Editor: Đoà Đoàn Quang Minh Events Sự kiện – – – Được sử dụng để báo hiệu điều xảy Trong Windows, có nhiều kiện Trong C#, event dạng đặc