43
Chương 1: Phát triển ứng dụng
// Khai báo chuỗi chứa tên của nền.
string platformName;
#if winXP // Biên dịch cho Windows XP
platformName = "Microsoft Windows XP";
#elif win2000 // Biên dịch cho Windows 2000
platformName = "Microsoft Windows 2000";
#elif winNT // Biên dịch cho Windows NT
platformName = "Microsoft Windows NT";
#elif win98 // Biên dịch cho Windows 98
platformName = "Microsoft Windows 98";
#else // Nền không được nhận biết
platformName = "Unknown";
#endif
Console.WriteLine(platformName);
}
}
Để xây dựng lớp
ConditionalExample
(chứa trong file ConditionalExample.cs) và định nghĩa
các ký hiệu
winXP
và
DEBUG
(không được sử dụng trong ví dụ này), sử dụng lệnh:
csc /define:winXP;DEBUG ConditionalExample.cs
Cấu trúc
#if .. #endif
đánh giá các mệnh đề
#if
và
#elif
chỉ đến khi tìm thấy một mệnh đề
đúng, nghĩa là nếu có nhiều ký hiệu được định nghĩa (chẳng hạn,
winXP
và
win2000
), thứ tự
các mệnh đề là quan trọng. Trình biên dịch chỉ biên dịch đoạn mã nằm trong mệnh đề đúng.
Nếu không có mệnh đề nào đúng, trình biên dịch sẽ biên dịch đoạn mã nằm trong mệnh đề
#else
.
Bạn cũng có thể sử dụng các toán tử luận lý để biên dịch có điều kiện dựa trên nhiều ký hiệu.
Bảng 1.1 tóm tắt các toán tử được hỗ trợ.
Bảng 1.1 Các toán tử luận lý được hỗ trợ bởi chỉ thị #if .. #endif
Toán tử
Ví dụ
Mô tả
==
#if winXP == true
Bằng. Đúng nếu
winXP
được định nghĩa. Tương
đương với
#if winXP
.
!=
#if winXP != true
Không bằng. Đúng nếu
winXP
không được định
nghĩa. Tương đương với
#if !winXP
.
&&
#if winXP && release
Phép AND luận lý. Đúng nếu
winXP
và
release
được
định nghĩa.