# หากไม่ได้แก้ไขข้อบกพร่องใน c #?


127

ฉันมีบรรทัดในรหัส vb:

#if Not Debug

ซึ่งฉันต้องแปลงและฉันไม่เห็นใน c #?

มีบางอย่างที่เทียบเท่าหรือมีวิธีแก้ปัญหาบางอย่าง?

คำตอบ:


239

คุณจะต้องใช้:

#if !DEBUG
    // Your code here
#endif

หรือถ้าสัญลักษณ์ของคุณเป็นจริง Debug

#if !Debug
    // Your code here
#endif

จากเอกสารนี้คุณสามารถใช้DEBUGเป็นบูลีนได้อย่างมีประสิทธิภาพ ดังนั้นคุณสามารถทำการทดสอบที่ซับซ้อนเช่น:

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

15

เพื่อให้คุณคุ้นเคยกับสิ่งที่เกิดขึ้นที่นี่#ifคือนิพจน์ก่อนการประมวลผลและDEBUGเป็นสัญลักษณ์การคอมไพล์ตามเงื่อนไข นี่คือบทความ MSDNสำหรับคำอธิบายเชิงลึกเพิ่มเติม

ตามค่าเริ่มต้นเมื่ออยู่ในการกำหนดค่าการแก้ปัญหา Visual Studio จะตรวจสอบตัวเลือกกำหนดค่าคงที่ DEBUGภายใต้คุณสมบัติการสร้างของโครงการ สิ่งนี้ใช้ได้กับทั้ง C # และ VB.NET ถ้าคุณอยากบ้าคุณสามารถกำหนดคอนฟิกการสร้างใหม่และกำหนดสัญลักษณ์การคอมไพล์ตามเงื่อนไขของคุณเอง ตัวอย่างทั่วไปเมื่อคุณเห็นสิ่งนี้คือ:

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

10

ในกรณีที่ช่วยคนอื่นได้นี่คือคำตอบของฉัน

สิ่งนี้จะไม่ทำงาน:

#if !DEBUG
     // My stuff here
#endif

แต่สิ่งนี้ได้ผล:

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

3
อาจจะถูกในวันที่โพสต์นี้ แต่อย่างน้อยสำหรับ VS 2015! DEBUG ทำงานตามที่คาดไว้
Ole Albers

5

ฉันคิดว่าสิ่งที่ชอบจะได้ผล

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

5
เพียงแค่สังเกตในวงเล็บไม่จำเป็นสำหรับ#ifคำสั่งเงื่อนไขนี้ สามารถเขียนได้#if DEBUG
atconway

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

5
นี่เป็นคำตอบที่ไม่ดีเนื่องจากใช้ตรรกะรันไทม์เพื่อจัดการกับสิ่งที่สามารถทำได้ในเวลาคอมไพล์
antiduh

เวลาออกแบบ T4 templating และสิ่งที่คล้ายกันจะต้องมีสิ่งนี้เป็นครั้งคราว
StingyJack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.