Nhng chủ đề tiến bộ trong C#
Các chỉ thị tiền xử lí trong C#
Bên cnh c tkhoá thường dùng, C# 1 slệnh tiền xử .những lệnh
này không bao gi được biên dịch thành bất kì dòng lệnh nào trong mã thực
thi. thay vào đó ảnh hưởng đến các khía cnh của quy trình biên dịch.
ví dụ , ta thể dùng chỉ dẫn tiền xử để ngăn trình bn dịch biên dịch một
phần đoạn mã nào đó .
Chỉ thị tin xử lí được pn biệt bằng cách bắt đầu với dấu # .
#define và #undef
#define được dùng dnhư :
#define DEBUG
Cho trình biên dịch biết biểu tượng với tên được đặt ( DEBUG) tồn tại.
hơi giống như khai báo biến nhưng nó không có giá tr- mà chỉ tồn tại.
Trái ngược với #define là #undef : b định nghĩa biểu tượng : #undef
DEBUG
Ta cần đặt các chỉ thị #define #undef vào đầu tập tin nguồn trước bất kì
khai báo đối tượng được biên dịch.
lưu ý : các chthị tin xử không có dấu ' ; ' cuối câu lệnh thường thì các
lnh chỉ trên 1 ng . nếu thấy 1 chỉ thị tiền xử lí, xem lệnh kết tiếp s
nằm ở dòng kế tiếp.
#if,#elif,#else,#endif
các chthị này tng báo cho trình biên dịch biết liệu có biên dch đoạn mã
hay không, d:
int DoSomeWork(double x)
{
// do something
#if DEBUG
Console.WriteLine("x is " + x);
#endif
}
Dòng lnh Console.Writeline chỉ được thực hiện khi DEBUG được định
nghĩa.( bằng chỉ thị #define). khi thấy #if kiểm tra xem biểu tượng có tồn
tại hay không nếu thì biên dịch đoạn mã bên trong ngược lại bỏ qua đoạn
n trong giữa #if và #endif. ta dùng cách này khi muốn lỗi, mà li
liên quan đến đoạn mã trong #if ,khi mun đoạn mã này chạy ta định nghĩa
DEBUG, khi mun không chạy ta #undef DEBUG,kích cỡ cũa tập tin
thực thi sẽ nhỏ hơn.
Các chthị #elif (= else if ) # else được dùng trong khi #if .th
lng khối #if
#define ENTERPRISE
#define W2K
// further on in the file
#if ENTERPRISE
// do something
#if W2K
// some code that is only relevant to enterprise
// edition running on W2K
#endif
#elif PROFESSIONAL
// do something else
#else
// code for the leaner version
#endif
#if #elif cũng hổ trợ 1 stác tử luận , dùng !,==,!=,||. 1 biểu tượng là
true nếu nó tồn tại và ngược lại là false. ví d:
#if W2K && (ENTERPRISE==false) // nếu W2K đưọc định nghĩa còn
ENTERPRISE thì không
#warning và #error
Nếu trình biên dịch thấy #warning sẽ trình bày chui xuất iện phía sau nó
đến người dùng,sau đó biên dịch tiếp. nếu thấy chỉ thi #error ,nó sẽ trình y
chuỗi con đến người dùng nếu đó là 1 thông báo li biên dịch , sau đó ngừng
biên dịch
#if DEBUG && RELEASE
#error "You've defined DEBUG and RELEASE simultaneously! "
#endif
#warning "Don't forget to remove this line before the boss tests the code! "
Console.WriteLine("*I hate this job*");
#region và #endregion
Các ch thị #region #endregion đưọc dùng để đánh dấu khối mã được
xem như là khối đơn với tên được đặt như :
#region Member Field Declarations
int x;
double d;
Currency balance;
#endregion
chthị này kng có nh hưởng nào đến trình biên dịch nhưng hữu ích
cho 1 strình biên tập bao gồm cả trình biên tập của VS.NET. trình biên tp
có thể dùng chỉ thị naỳ để gói gọn mã của ta trên màn hình.
# line
chthị #line có thể được dùng thay cho tên tập tin và thông tin sdòng
xuất bởi trình biên dch trong các thông o cnh o hay lỗi .thường
dùng khi bn viết mã kết hợp với 1 số i khác sau đó sẽ thay đoạn mã
bạn gõ vào trước khi biên dịch ,trình biên dch sẽ thông báo sdòng tên
tập tin không phù hợp vi số dòng trong tập tin mà bạn đang chỉnh sửa .ch
th #line thể được dùng để lưu sự phù hợp. ta cũng thể dùng cú pháp
#line default để lưu dòng thành số dòng mặc định :