Kata kunci const
Anda menggunakan kata kunci const
untuk mendeklarasikan bidang konstanta atau konstanta lokal. Bidang konstanta dan lokal bukan variabel dan tidak dapat dimodifikasi. Konstanta dapat berupa angka, nilai Boolean, string, atau referensi null. Jangan membuat konstanta untuk mewakili informasi yang Anda harapkan berubah kapan saja. Misalnya, jangan gunakan bidang konstanta untuk menyimpan harga layanan, nomor versi produk, atau nama merek perusahaan. Nilai-nilai ini dapat berubah dari waktu ke waktu, dan karena pengkompilasi menyebarkan konstanta, kode lain yang dikompilasi dengan pustaka Anda harus dikompilasi ulang untuk melihat perubahan. Lihat juga kata kunci readonly. Misalnya:
const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";
String terinterpolasi dapat berupa konstanta, jika semua ekspresi yang digunakan juga merupakan string konstanta. Fitur ini dapat meningkatkan kode yang membangun string konstanta:
const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";
Komentar
Jenis deklarasi konstanta menentukan jenis anggota yang diperkenalkan oleh deklarasi. Penginisialisasi konstanta lokal atau bidang konstanta harus berupa ekspresi konstanta yang dapat dikonversi secara implisit ke jenis target.
Ekspresi konstanta adalah ekspresi yang dapat dievaluasi sepenuhnya pada waktu kompilasi. Oleh karena itu, satu-satunya nilai yang mungkin untuk konstanta jenis referensi adalah string dan referensi null.
Deklarasi konstanta dapat mendeklarasikan beberapa konstanta, seperti:
public const double X = 1.0, Y = 2.0, Z = 3.0;
Pengubah static
tidak diizinkan dalam deklarasi konstanta.
Konstanta dapat berpartisipasi dalam ekspresi tetap, sebagai berikut:
public const int C1 = 5;
public const int C2 = C1 + 100;
Nota
Kata kunci readonly berbeda dari kata kunci const
. Bidang const
hanya dapat diinisialisasi pada deklarasi bidang. Bidang readonly
dapat diinisialisasi baik pada deklarasi maupun di konstruktor. Oleh karena itu, bidang readonly
dapat memiliki nilai yang berbeda tergantung pada konstruktor yang digunakan. Selain itu, meskipun bidang const
adalah konstanta waktu kompilasi, bidang readonly
dapat digunakan untuk konstanta run-time, seperti dalam baris ini: public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Contoh
public class ConstTest
{
class SampleClass
{
public int x;
public int y;
public const int C1 = 5;
public const int C2 = C1 + 5;
public SampleClass(int p1, int p2)
{
x = p1;
y = p2;
}
}
static void Main()
{
var mC = new SampleClass(11, 22);
Console.WriteLine($"x = {mC.x}, y = {mC.y}");
Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
}
}
/* Output
x = 11, y = 22
C1 = 5, C2 = 10
*/
Contoh berikut menunjukkan cara mendeklarasikan konstanta lokal:
public class SealedTest
{
static void Main()
{
const int C = 707;
Console.WriteLine($"My local constant = {C}");
}
}
// Output: My local constant = 707
Spesifikasi bahasa C#
Untuk informasi selengkapnya, lihat bagian berikut dari spesifikasi bahasa C#: