Bagikan melalui


const (Referensi C#)

Anda menggunakan const kata kunci untuk mendeklarasikan bidang konstanta atau konstanta lokal. Bidang konstanta dan lokal bukan variabel dan mungkin tidak 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 pengompilasi menyebarkan konstanta, kode lain yang dikompilasi dengan pustaka Anda harus dikompilasi ulang untuk melihat perubahan. Lihat juga kata kunci readonly. Contohnya:

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

Dimulai dengan C# 10, string terinterpolasi dapat berupa konstanta, jika semua ekspresi yang digunakan juga merupakan string konstanta. Fitur ini dapat meningkatkan kode yang membuat string konstanta:

const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";

Keterangan

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 diperbolehkan dalam deklarasi konstanta.

Konstanta dapat berpartisipasi dalam ekspresi konstanta, sebagai berikut:

public const int C1 = 5;
public const int C2 = C1 + 100;

Catatan

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#:

Lihat juga