- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
[C#] Preprocessor Directives tiền xử lý trong lập trình csharp
Xin chào các bạn bài viết hôm nay, mình sẽ giới thiệu đến Preprocessor Directives Tiền xử lý trong lập trình C# Winform.
[C#] Preprocessor Directives in Winform
Trong lập trình ứng dụng, các bạn có viết hàm kiểm tra phiên bản cập nhật mới, nếu phần mềm có phiên bản mới thì Download về.
Tuy nhiên, khi viết code như vậy, vô tình khi chúng ta chạy Debug mà có phiên bản mới, thì nó cập nhật thì không đúng với mong muốn của chúng ta.
Và Mong muốn của mình là Phần mềm chỉ kiểm tra phiên bản mới Update, khi chạy ở chế độ Release.
Chúng ta có thể sử dụng Preprocessor Directives để thực hiện công việc này một cách dễ dàng:
#if (!DEBUG)
KiemTraPhienBan(); // hàm này chỉ chạy ở chế độ Release
#endif
1. CHỈ THỊ TIỀN XỬ LÝ (PREPROCESSOR DIRECTIVE) TRONG C#
Chỉ thị tiền xử lý (Preprocessor Directive) là các lệnh đặc biệt được chèn vào mã và được trình biên dịch phân tích khi dự án được xây dựng. Chúng ta sử dụng chỉ thị tiền xử lý để sửa đổi mã được biên dịch bằng cách thêm hoặc loại bỏ các phần theo ký hiệu được định nghĩa.
Tất cả chỉ thị tiền xử lý bắt đầu bằng #, trong một dòng chỉ có các ký tự khoảng trắng mới xuất hiện trước một chỉ thị tiền xử lý. Các chỉ thị tiền xử lý không phải là câu lệnh, vì vậy chúng không kết thúc bằng dấu chấm phẩy (;).
Trình biên dịch C# không có bộ tiền xử lý (preprocessor) riêng, nhưng các chỉ thị thì được xử lý riêng. Trong C#, chỉ thị tiền xử lý được sử dụng để hỗ trợ biên dịch có điều kiện. Không giống như các chỉ thị trong C và C++, chúng không được sử dụng để tạo macro. Một chỉ thị tiền xử lý phải là duy nhất trên một dòng.
Trong C# bao gồm các chỉ thị tiền xử lý dưới đây:
#if
#else
#elif
#endif
#define
#undef
#warning
#error
#line
#region
#endregion
2. SỬ DỤNG CHỈ THỊ TIỀN XỬ LÝ TRONG C#
Chúng ta sử dụng chỉ thị tiền xử lý trong C# để:
Biên dịch có điều kiện: Sử dụng chỉ thị tiền xử lý đặc biệt, bạn có thể thêm hoặc loại bỏ các phần của chương trình theo các điều kiện khác nhau.
Line control: Nếu sử dụng chương trình kết hợp hoặc sắp xếp các file thành một file trung gian, sau đó biên dịch, bạn có thể sử dụng Line control để thông báo cho trình biên dịch vị trí các dòng nguồn.
Báo cáo lỗi và cảnh báo: Chỉ thị '#error' khiến bộ tiền xử lý báo cáo lỗi nghiêm trọng, tương tự chỉ thị '#warning' khiến bộ tiền xử lý đưa ra cảnh báo và tiếp tục tiền xử lý.
3. CÁC CHỈ THỊ TIỀN XỬ LÝ TRONG C#
#Define Và #Undef
Chỉ thị tiền xử lý #define được sử dụng để định nghĩa một ký hiệu hoặc tên mã token. Bạn có thể sử dụng biểu tượng này trong đoạn mã với các chỉ thị tiền xử lý #if và #elif.
Để dễ hình dung, bạn đọc cùng tham khảo dòng mã dưới đây:
#define DEBUG
Dòng mã trên định nghĩa ký hiệu có tên là DEBUG. Mặc dù không bắt buộc, nhưng thông lệ là định nghĩa các ký hiệu bằng chữ in hoa.
Về cơ bản dòng trên tương tự như khai báo biến, chỉ khác là nó không chiếm dụng bộ nhớ lưu trữ nào và không thể lưu trữ bất kỳ giá trị nào cả.
Một lưu ý quan trọng là tất cả chỉ thị #define mà bạn đang sử dụng phải đặt ở đầu file mã nguồn. Nếu đặt ở vị trí khác, nó sẽ trả về thông báo lỗi như dưới đây:
Một biểu tượng có thể được định nghĩa bằng cách sử dụng #define hoặc cũng có thể được truyền thông qua dòng lệnh. Vì vậy một biểu tượng có thể không được định nghĩa bằng cách sử dụng chỉ thị #undef.
#undef DEBUG
Undef là biểu tượng tương tự như xóa để nó không tồn tại cho mã sau đó.
#If, #Else, #Elif Và #Endif
Sử dụng các biểu tượng được định nghĩa bằng cách sử dụng #define khi chúng được kết hợp với các chỉ thị #if và #elif. Các chỉ thị tiền xử lý này cho phép bạn kiểm tra xem một biểu tượng cụ thể đã được định nghĩa hay chưa. Dựa trên kết quả của phần kiểm tra này, bạn có thể biên dịch đoạn mã có điều kiện.
Ví dụ dưới đây minh họa các mã được biên dịch như thế nào:
#define DEBUG
...
#if DEBUG
Console.WriteLine("You have defined DEBUG symbol");
#endif
Trong đoạn mã trên, trước hết chúng ta định nghĩa biểu tượng DEBUG, tiếp theo chúng ta sử dụng chỉ thị #if để kiểm tra xem DEBUG có được định nghĩa hay không.
Nếu có, đầu ra sẽ hiển thị thông báo bằng cách sử dụng Console.WriteLine(). Nếu chạy ứng dụng này, đầu ra sẽ có dạng như hình dưới đây:
Thanks for watching!