Harga tiket dan nama event dalam program penjualan tiket tidak berubah selama event berlangsung. Jika nilai seperti itu ditulis sebagai literal berulang-ulang, satu salah ketik saja membuat perhitungan tidak konsisten. Solusinya: beri nama sekali dengan keyword const, lalu gunakan namanya di seluruh program.
Membuat Konstanta dengan const #
Keyword const ditulis di depan tipe saat deklarasi:
const string NamaEvent = "Konser Nusantara";
const int HargaReguler = 50000;
int jumlahTiket = 3;
int totalHarga = jumlahTiket * HargaReguler;
Console.WriteLine(NamaEvent);
Console.WriteLine(HargaReguler);
Console.WriteLine(totalHarga);Output yang Dihasilkan:
Konser Nusantara
50000
150000Mari kita telaah baris demi baris:
- Baris 1 (
const string NamaEvent = ...): Keywordconstmenandai variable sebagai konstanta; nilai wajib diberikan saat deklarasi. - Baris 2 (
const int HargaReguler = 50000;): KonstantaHargaRegulerterikat pada nilai50000sepanjang program berjalan. - Baris 4-5:
jumlahTikettetap variable biasa karena nilainya boleh berubah; perhitungan total memakai konstanta. - Baris 7-9: Konstanta dicetak seperti variable biasa. Compiler mengganti setiap pemakaian nama konstanta dengan nilai literalnya saat kompilasi.
Dua Larangan yang Ditegakkan Compiler #
Larangan pertama: konstanta wajib diberi nilai saat deklarasi. Deklarasi tanpa nilai ditolak compiler:
const int HargaReguler;
Console.WriteLine(HargaReguler);Pesan compiler:
Program.cs(1,11): error CS0145: A const field requires a value to be providedLarangan kedua: nilai konstanta tidak dapat diubah setelah dibuat. Percobaan assignment ditolak:
const int HargaReguler = 50000;
HargaReguler = 60000;
Console.WriteLine(HargaReguler);Pesan compiler:
Program.cs(2,1): error CS0131: The left-hand side of an assignment must be a variable, property or indexerCompiler menolak karena sisi kiri = bukan variable, melainkan konstanta. Salinan lengkap kedua pesan memuat path project; bagian itu dipangkas agar ringkas. Aturan ketiga menyusul dua larangan tersebut: nilai konstanta harus diketahui saat kompilasi. Nilai boleh berupa literal, konstanta lain, atau ekspresi yang seluruh sisinya konstanta. Hasil input pengguna atau perhitungan runtime tidak dapat menjadi konstanta; untuk kebutuhan itu gunakan variable biasa.
Praktik yang disebut industri sebagai magic number — angka yang muncul di tengah kode tanpa penjelasan — berkurang ketika angka itu diberi nama konstanta. HargaReguler menyebut maksudnya sendiri, sedangkan 50000 yang ditulis di lima tempat harus ditelusuri satu per satu ketika tarif berubah. Dengan konstanta, perubahan cukup dilakukan pada satu baris deklarasi, dan seluruh titik pemakaian mengikuti otomatis.
Konvensi Penamaan Konstanta #
Konstanta ditulis dalam PascalCase: HargaReguler, NamaEvent, BatasStokMaksimum. Huruf kapital di awal setiap kata membedakan konstanta dari variable biasa yang mengikuti camelCase.