2011-08-30 29 views
86

Tôi có dòng trong mã vb:#if Không gỡ lỗi trong C#?

#if Not Debug 

mà tôi phải chuyển đổi, và tôi không nhìn thấy nó trong C#?

Có điều gì tương đương với nó không, hoặc có cách nào khác không?

Trả lời

156

Bạn sẽ cần phải sử dụng:

#if !DEBUG 
    // Your code here 
#endif 

Hoặc, nếu biểu tượng của bạn là thực sự Debug

#if !Debug 
    // Your code here 
#endif 

Từ documentation, bạn có thể xử lý hiệu quả DEBUG dưới dạng boolean. Vì vậy, bạn có thể làm các xét nghiệm phức tạp như:

#if !DEBUG || (DEBUG && SOMETHING) 
5

Tôi nghĩ rằng một cái gì đó như sẽ làm việc

#if (DEBUG) 
//Something 
#else 
//Something 
#endif 
+4

Chỉ cần lưu ý các dấu ngoặc không cần thiết cho điều kiện '# này if' báo cáo. Nó có thể được viết '#if DEBUG' – atconway

12

Chỉ vì vậy bạn đã quen thuộc với những gì đang xảy ra ở đây, #if là một biểu hiện tiền xử lý, và DEBUG là một biểu tượng biên soạn có điều kiện. Here's an MSDN article để có giải thích chi tiết hơn.

Theo mặc định, khi trong gỡ lỗi cấu hình, Visual Studio sẽ kiểm tra Define DEBUG hằng số tùy chọn dưới tính xây dựng của dự án. Điều này đi cho cả C# và VB.NET. Nếu bạn muốn phát điên, bạn có thể định nghĩa các cấu hình xây dựng mới và xác định các biểu tượng biên dịch có điều kiện của riêng bạn. Ví dụ điển hình khi bạn thấy điều này mặc dù là:

#if DEBUG 
    //Write to the console 
#else 
    //write to a file 
#endif 
4

Chỉ trong trường hợp nó giúp người khác ra ngoài, đây là câu trả lời của tôi.

này sẽ không hoạt động đúng:

#if !DEBUG 
    // My stuff here 
#endif 

Nhưng điều này đã làm công việc:

#if (DEBUG == false) 
    // My stuff here 
#endif 
+3

Có thể đã đúng vào ngày này được đăng, nhưng ít nhất là cho VS 2015! DEBUG hoạt động như mong đợi –

0
 bool isDebugMode = false; 
#if DEBUG 
    isDebugMode = true; 
#endif 
    if (isDebugMode == false) 
    { 
     enter code here 
    } 
    else 
    { 
     enter code here 
    } 
+2

Đây là câu trả lời không tốt vì nó sử dụng logic thời gian chạy để xử lý được thực hiện tại thời gian biên dịch. – antiduh

+0

Thời gian thiết kế T4 và các loại tương tự sẽ cần loại điều này theo thời gian. – StingyJack

Các vấn đề liên quan