C # - คำสั่งของตัวประมวลผลล่วงหน้า

คำสั่งพรีโปรเซสเซอร์จะให้คำสั่งแก่คอมไพลเลอร์เพื่อประมวลผลข้อมูลล่วงหน้าก่อนเริ่มการคอมไพล์จริง

คำสั่งก่อนตัวประมวลผลทั้งหมดขึ้นต้นด้วย # และอักขระช่องว่างเท่านั้นที่อาจปรากฏก่อนคำสั่งพรีโปรเซสเซอร์บนบรรทัด คำสั่งตัวประมวลผลล่วงหน้าไม่ใช่คำสั่งดังนั้นจึงไม่ได้ลงท้ายด้วยอัฒภาค (;)

คอมไพเลอร์ C # ไม่มีพรีโปรเซสเซอร์แยกต่างหาก อย่างไรก็ตามคำสั่งจะถูกประมวลผลราวกับว่ามีอยู่ ใน C # คำสั่งพรีโปรเซสเซอร์จะใช้เพื่อช่วยในการคอมไพล์ตามเงื่อนไข ไม่เหมือนกับคำสั่ง C และ C ++ ไม่ได้ใช้เพื่อสร้างมาโคร คำสั่งพรีโปรเซสเซอร์ต้องเป็นคำสั่งบนบรรทัดเท่านั้น

Preprocessor Directives ใน C #

ตารางต่อไปนี้แสดงคำสั่งพรีโปรเซสเซอร์ที่มีอยู่ใน C # -

ซีเนียร์ คำสั่งและคำอธิบายของตัวประมวลผลล่วงหน้า
1

#define

กำหนดลำดับของอักขระที่เรียกว่าสัญลักษณ์

2

#undef

ช่วยให้คุณไม่สามารถกำหนดสัญลักษณ์ได้

3

#if

อนุญาตให้ทดสอบสัญลักษณ์หรือสัญลักษณ์เพื่อดูว่าพวกเขาประเมินเป็นจริงหรือไม่

4

#else

อนุญาตให้สร้างคำสั่งเงื่อนไขแบบผสมพร้อมกับ #if

5

#elif

อนุญาตให้สร้างคำสั่งเงื่อนไขแบบผสม

6

#endif

ระบุจุดสิ้นสุดของคำสั่งเงื่อนไข

7

#line

ช่วยให้คุณแก้ไขหมายเลขบรรทัดของคอมไพเลอร์และ (เป็นทางเลือก) เอาต์พุตชื่อไฟล์สำหรับข้อผิดพลาดและคำเตือน

8

#error

อนุญาตให้สร้างข้อผิดพลาดจากตำแหน่งเฉพาะในโค้ดของคุณ

9

#warning

อนุญาตให้สร้างคำเตือนระดับหนึ่งจากตำแหน่งเฉพาะในรหัสของคุณ

10

#region

ช่วยให้คุณสามารถระบุบล็อกของโค้ดที่คุณสามารถขยายหรือยุบได้เมื่อใช้คุณลักษณะการสรุปของ Visual Studio Code Editor

11

#endregion

ซึ่งทำเครื่องหมายจุดสิ้นสุดของบล็อก #region

#define พรีโปรเซสเซอร์

#define คำสั่งก่อนตัวประมวลผลสร้างค่าคงที่สัญลักษณ์

#define ให้คุณกำหนดสัญลักษณ์ดังกล่าวโดยใช้สัญลักษณ์เป็นนิพจน์ที่ส่งผ่านไปยังคำสั่ง #if นิพจน์จะประเมินค่าเป็นจริง ไวยากรณ์มีดังนี้ -

#define symbol

โปรแกรมต่อไปนี้แสดงให้เห็นถึงสิ่งนี้ -

#define PI 
using System;

namespace PreprocessorDAppl {
   class Program {
      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine("PI is defined");
         #else
            Console.WriteLine("PI is not defined");
         #endif
         Console.ReadKey();
      }
   }
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

PI is defined

คำสั่งเงื่อนไข

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

ไวยากรณ์สำหรับคำสั่งเงื่อนไขคือ -

#if symbol [operator symbol]...

โดยที่สัญลักษณ์คือชื่อของสัญลักษณ์ที่คุณต้องการทดสอบ คุณยังสามารถใช้จริงและเท็จหรือนำหน้าสัญลักษณ์ด้วยโอเปอเรเตอร์ปฏิเสธ

สัญลักษณ์ประกอบการเป็นผู้ประกอบการที่ใช้สำหรับการประเมินสัญลักษณ์ ตัวดำเนินการอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้ -

  • == (ความเท่าเทียมกัน)
  • ! = (อสมการ)
  • && (และ)
  • || (หรือ)

คุณยังสามารถจัดกลุ่มสัญลักษณ์และตัวดำเนินการด้วยวงเล็บ คำสั่งเงื่อนไขใช้สำหรับการคอมไพล์โค้ดสำหรับบิวด์ดีบักหรือเมื่อคอมไพล์สำหรับคอนฟิกูเรชันเฉพาะ คำสั่งเงื่อนไขที่เริ่มต้นด้วย#if คำสั่งต้องยุติอย่างชัดเจนด้วยก #endif คำสั่ง

โปรแกรมต่อไปนี้แสดงให้เห็นถึงการใช้คำสั่งเงื่อนไข -

#define DEBUG
#define VC_V10
using System;

public class TestClass {
   public static void Main() {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG and VC_V10 are defined");
      #else
         Console.WriteLine("DEBUG and VC_V10 are not defined");
      #endif
      Console.ReadKey();
   }
}

เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานโค้ดจะได้ผลลัพธ์ดังนี้ -

DEBUG and VC_V10 are defined