Menguasai Direktif Preprosesor C#: Cara Mereka Bentuk Kode Anda
Direktif preprosesor memberikan instruksi kepada compiler untuk memproses informasi sebelum kompilasi sebenarnya dimulai.
Semua direktif preprosesor dimulai dengan #, dan hanya karakter spasi putih yang dapat muncul sebelum direktif preprosesor pada baris. Direktif preprosesor bukan pernyataan, jadi tidak diakhiri dengan titik koma (;).
Compiler C# tidak memiliki preprosesor terpisah; namun, direktif diproses seolah-olah ada satu. Dalam C# direktif preprosesor digunakan untuk membantu kompilasi bersyarat. Tidak seperti direktif C dan C++, mereka tidak digunakan untuk membuat makro. Sebuah direktif preprosesor harus menjadi instruksi tunggal pada baris.
Direktif Preprosesor dalam C#
Tabel berikut mencantumkan direktif preprosesor yang tersedia dalam C#:
| No. | Direktif Preprosesor & Deskripsi |
| 1 | #define Mendefinisikan urutan karakter, yang disebut simbol. |
| 2 | #undef Memungkinkan Anda untuk menghapus definisi simbol. |
| 3 | #if Memungkinkan pengujian simbol atau simbol untuk melihat apakah mereka mengevaluasi ke benar. |
| 4 | #else Memungkinkan pembuatan direktif kondisional gabungan, bersama dengan #if. |
| 5 | #elif Memungkinkan pembuatan direktif kondisional gabungan. |
| 6 | #endif | Menentukan akhir dari direktif kondisional. |
| 7 | #line Memungkinkan Anda untuk mengubah nomor baris compiler dan (secara opsional) nama file output untuk kesalahan dan peringatan. |
| 8 | #error Memungkinkan pembuatan error dari lokasi tertentu dalam kode Anda. |
| 9 | #warning Memungkinkan pembuatan peringatan level satu dari lokasi tertentu dalam kode Anda. |
| 10 | #region Memungkinkan Anda untuk menentukan blok kode yang dapat Anda perlebar atau sederhanakan saat menggunakan fitur outlining dari Editor Kode Visual Studio Code. |
| 11 | #endregion Menandai akhir dari blok #region. |
Preprocessor #define
Direktif preprosesor #define membuat konstanta simbolik.
#define memungkinkan Anda untuk mendefinisikan simbol sehingga, dengan menggunakan simbol sebagai ekspresi yang diteruskan ke direktif #if, ekspresi mengevaluasi ke benar. Sintaksnya adalah sebagai berikut:
#define symbol
Program berikut menggambarkan hal ini:
Live Demo
#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(); } } } Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah:
PI is defined
Direktif Kondisional
Anda dapat menggunakan direktif #if untuk membuat direktif kondisional. Direktif kondisional berguna untuk menguji simbol atau simbol untuk memeriksa apakah mereka mengevaluasi ke benar. Jika mereka mengevaluasi ke benar, compiler mengevaluasi semua kode antara #if dan direktif berikutnya.
Sintaks untuk direktif kondisional adalah sebagai berikut:
#if symbol [operator symbol]...
Dimana, symbol adalah nama simbol yang ingin Anda uji. Anda juga dapat menggunakan true dan false atau menambahkan simbol dengan operator negasi.
Operator symbol adalah operator yang digunakan untuk mengevaluasi simbol. Operator dapat salah satu dari berikut ini:
- == (kesamaan)
- != (ketidaksamaan)
- && (dan)
- || (atau)
Anda juga dapat mengelompokkan simbol dan operator dengan tanda kurung. Direktif kondisional digunakan untuk mengkompilasi kode untuk build debug atau saat mengkompilasi untuk konfigurasi tertentu. Sebuah direktif kondisional yang dimulai dengan direktif #if harus secara eksplisit diakhiri dengan direktif #endif.
Program berikut menunjukkan penggunaan direktif kondisional:
Live Demo
#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(); } } Ketika kode di atas dikompilasi dan dieksekusi, hasilnya adalah:
DEBUG and VC_V10 are defined