Chỉ thị #line cho phép bạn thay đổi số dòng của trình biên dịch và (tùy chọn) tên file xuất ra cho lỗi và cảnh báo.
Ví dụ 1: Thay đổi số dòng và tên file
#line 100 "demo" int a; // CS0168 trên dòng 100 int b; // CS0168 trên dòng 101 int c; // CS0168 trên dòng 102
Chỉ thị #line 100 buộc số dòng thành 100 và cho đến chỉ thị #line tiếp theo, tên file sẽ báo cáo là "demo".
Ví dụ 2: Khôi phục mặc định
#line default char a; // CS0168 trên dòng 15 float b; // CS0168 trên dòng 16
Chỉ thị #line default khôi phục số dòng về mặc định. Chỉ thị này sau đó đếm các dòng đã được đánh số lại bởi chỉ thị trước đó.
Ứng dụng thực tế
#line thường được dùng bởi:
- Công cụ sinh mã (code generators) để map lỗi về file nguồn gốc
- Template engines (Razor, T4) để báo lỗi chính xác tại file template
- Debugger để hiển thị vị trí chính xác trong mã nguồn gốc
Ví dụ thực tế:
#line 50 "GeneratedCode.cs"
// Mã được sinh tự động
public class GeneratedClass { }
// Quay lại mã thủ công
#line default
public class ManualClass { }