#if (مرجع C#)

عندما يصادف مترجم C# توجيه #if, يتبع في النهاية بتوجيه #endif, فإنه سيتم ترجمة التعليمات البرمجية بين توجيهات فقط إذا تم تعريف الرمز المحدد. بعكس C و C++، لا يمكنك تعيين القيمة الرقمية لرمز; و العبارة #if في C# منطقية وتختبر فقط ما إذا تم تعريف الرمز أم لا. على سبيل المثال،

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif

يمكنك استخدام عوامل تشغيل == (مساواة) != ( لا مساواة ) فقط لاختبار صواب أو خطأ . صوب يعني أن الرمز تم تعريفه. الكشف #if DEBUG يحتوي على نفس المعنى كـ #if (DEBUG == true). عوامل التشغيل && (و) ، و || (أو)يمكن استخدامها لتقييم ما إذا تم تحديد رموز متعددة. يمكنك أيضاً تجميع الرموز وعوامل التشغيل مع الأقواس.

ملاحظات

التوجيهات #if، مع رقم آخر, #elif, #endif, رقم تعريف, and #undef، تتيح لك تضمين أو استبعاد التعليمات البرمجية استناداً إلى وجود واحد أو أكثر من الرموز. قد يكون هذا مفيداً عند ترجمة تعليمات برمجية لـ بناء تصحيح أو عند التحويل البرمجي لتكوين معين.

التوجيه الشرطي يبدأ بالتوجيه #if, و يجب إنهاءه بوضوح مع التوجيه #endif.

#define يتيح لك تحديد رمز, بحيث, باستخدام الرمز كتعبير لتمريره للتوجيه #if، و سيقيم التعبير إلى true.

يمكنك أيضاً تعريف رمز مع خيار برنامج المحول البرمجي / define . يمكنك عدم تعريف رمز مع #undef.

الرمز الذي تعرفه مع /define أو مع #define لا يتعارض مع متغير له نفس الاسم. مما يعني، لا يجب تمرير اسم متغير إلى توجيه preprocessor ولا يمكن تقييم رمز قبل توجيه preprocessor.

يتم إنشاء نطاق الرمز مع #define هو الملف الذي تم تعريفه.

مثال

// preprocessor_if.cs
#define DEBUG
#define MYTEST
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !MYTEST)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
        Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
        Console.WriteLine("DEBUG and MYTEST are defined");
#else
        Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
    }
}

DEBUG and MYTEST are defined 

راجع أيضًا:

المرجع

توجيهات #C

المبادئ

دليل البرمجة لـ #C

موارد أخرى

مرجع C#‎