Konstanta Lokal (Local Constants)
Konstanta lokal sangat mirip dengan variabel lokal, namun ada perbedaan penting: setelah diinisialisasi, nilai konstanta tidak boleh diubah.
Sama seperti variabel lokal, konstanta harus dideklarasikan di dalam blok kode.
Terdapat dua ciri utama konstanta:
- Saat deklarasi, wajib memberikan nilai awal;
- Setelah dideklarasikan, nilai tidak dapat diubah.
Sintaks Dasar Konstanta
const Tipe NamaKonstanta = NilaiAwal;
// const: kata kunci, harus ditulis tepat di depan tipe data
// = NilaiAwal: tidak boleh dihilangkan, wajib ada
Code language: JavaScript (javascript)
Penjelasan Aturan Sintaks
Dibandingkan deklarasi field atau variabel biasa, ada dua perbedaan:
- Tambahkan kata kunci
constsebelum tipe data; - Harus menyertakan nilai awal, dan nilai tersebut harus dapat ditentukan saat kompilasi:
- Biasanya berupa literal tipe dasar atau ekspresi yang dibangun dari tipe dasar;
- Pemberian nilai
nulldiperbolehkan; - Tidak boleh memberikan referensi instance objek (referensi objek baru diketahui saat program berjalan, tidak memenuhi syarat konstanta waktu kompilasi).
class Program
{
static void Main()
{
int a = 10; // ini adalah variabel
const int b = 20; // ini adalah konstanta, bentuknya mirip variabel
// kata kunci const menandakan ini sebagai konstanta
a = 100; // variabel bisa diubah nilainya
a = 200; // boleh diubah berkali-kali
// Galat
b = 300; // konstanta tidak dapat diubah, kompiler akan mengeluarkan pesan galat
// Penggunaan konstanta meningkatkan keterbacaan dan kemudahan pemeliharaan kode
int c; // deklarasi variabel
c = 12; // variabel boleh memisahkan deklarasi dan pemberian nilai
// Konstanta tidak mengizinkan pemisahan deklarasi dan inisialisasi
// Galat
const double d; // hanya deklarasi
d = 3.14; // berlaku untuk variabel, tidak untuk konstanta
}
}Code language: C# (cs)

Dua galat di atas memiliki penyebab berbeda: yang pertama mencoba mengubah nilai konstanta, yang kedua memisahkan deklarasi dan inisialisasi. Untuk konstanta, kedua langkah ini harus dilakukan bersamaan.
Apakah objek class bisa dijadikan konstanta?
Ekspresi yang diberikan ke konstanta phone harus berupa konstanta waktu kompilasi.
new Phone() akan mengalokasikan memori heap dan membuat objek saat program dijalankan, termasuk nilai waktu eksekusi.
C# melarang pemberian referensi objek waktu eksekusi ke konstanta lokal const, hal ini akan langsung memicu galat kompilasi CS0133.
class Program
{
static void Main()
{
const Phone phone = new Phone();
}
}
class Phone
{
}Code language: C# (cs)

Penjelasan Tambahan Kata Kunci
const bukanlah pengubah (modifier), melainkan bagian utama sintaks deklarasi dan harus ditulis langsung di depan tipe data.
Kata kunci seperti private, public dan protected adalah pengubah yang sesungguhnya.
Aturan Lingkup dan Contoh
Aturan lingkup konstanta lokal sama persis dengan variabel lokal: jika dideklarasikan di dalam metode atau blok kode, konstanta akan tidak berlaku setelah blok selesai dieksekusi.
void ShowArea()
{
const double PI = 3.1416; // deklarasi konstanta lokal PI
for (int radius = 1; radius <= 5; radius++) // tampilkan luas lingkaran dengan jari-jari 1 hingga 5
{
double area = radius * radius * PI; // membaca nilai konstanta PI
Console.WriteLine($"Jari-jari: {radius}, Luas: {area}");
}
}
Code language: C# (cs)
Konstanta PI hanya dapat digunakan di dalam metode ShowArea dan akan dihapus setelah metode selesai dijalankan.
class Program
{
static void Main()
{
ShowArea();
}
static void ShowArea()
{
const double PI = 3.1416;
for (int radius = 1; radius <= 5; radius++)
{
double area = radius * radius * PI;
Console.WriteLine($"Radius: {radius}, Area: {area}");
}
}
}
Code language: C# (cs)

Konstanta Lokal