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