NEWS

[C#] Preprocessor Directives tiền xử lý trong lập trình csharp

[C#] Preprocessor Directives tiền xử lý trong lập trình csharp
Đăng bởi: Thảo Meo - Lượt xem: 5651 14:33:43, 01/07/2020DEVEXPRESS   In bài viết

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

Preprocessor-Directives

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:

chi-thi-tien-xu-ly-preprocessor-directive-trong-c-1

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:

chi-thi-tien-xu-ly-preprocessor-directive-trong-c-2

Thanks for watching!

 

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Preprocessor Directives tiền xử lý trong lập trình csharp
Đăng bởi: Thảo Meo - Lượt xem: 5651 14:33:43, 01/07/2020DEVEXPRESS   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.