# nếu Không gỡ lỗi trong c #?


127

Tôi có dòng trong mã vb:

#if Not Debug

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

Có một cái gì đó tương đương với nó, hoặc có một số cách giải quyết?

Câu trả lời:


239

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

#if !DEBUG
    // Your code here
#endif

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

#if !Debug
    // Your code here
#endif

Từ tài liệu , bạn có thể xử lý hiệu quả DEBUGnhư một boolean. Vì vậy, bạn có thể thực hiện các bài kiểm tra phức tạp như:

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

15

Chỉ để bạn quen với những gì đang diễn ra ở đây, #iflà một biểu thức tiền xử lý và DEBUGlà một ký hiệu biên dịch có điều kiện. Đây là một bài báo MSDN để có giải thích sâu hơn.

Theo mặc định, khi ở trong cấu hình Gỡ lỗi , Visual Studio sẽ kiểm tra tùy chọn Định nghĩa hằng số Gỡ lỗi trong thuộc tính Xây dựng của dự án. Điều này áp dụng cho cả C # và VB.NET. Nếu bạn muốn phát điên lên, bạn có thể xác định cấu hình xây dựng mới và xác định các ký hiệu 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

10

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

Điều này sẽ không hoạt động đúng:

#if !DEBUG
     // My stuff here
#endif

Nhưng điều này đã hoạt động:

#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 làm việc như mong đợi!
Ole Albers

5

Tôi nghĩ một cái gì đó giống như sẽ hoạt động

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

5
Chỉ cần lưu ý rằng dấu ngoặc không bắt buộc đối với #ifcâu lệnh điều kiện này . Nó có thể được viết#if DEBUG
atconway

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

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

Thời gian thiết kế khuôn mẫu T4 và những thứ tương tự sẽ cần loại thứ này theo thời gian.
StingyJack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.