const (C# Başvurusu)

Sabit bir alan veya yerel sabit bildirmek için anahtar sözcüğünü const kullanırsınız. Sabit alanlar ve yerel değerler değişken değildir ve değiştirilmeyebilir. Sabitler sayı, Boole değeri, dize veya null başvuru olabilir. İstediğiniz zaman değiştirmeyi beklediğiniz bilgileri temsil eden bir sabit oluşturmayın. Örneğin, bir hizmetin fiyatını, ürün sürüm numarasını veya şirketin marka adını depolamak için sabit bir alan kullanmayın. Bu değerler zaman içinde değişebilir ve derleyiciler sabitleri yaydığından, değişiklikleri görmek için kitaplıklarınızla derlenen diğer kodların yeniden derlenmiş olması gerekir. Ayrıca readonly anahtar sözcüğüne de bakın. Örneğin:

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

C# 10 ile başlayarak, kullanılan tüm ifadeler de sabit dizeler ise, ilişkilendirilmiş dizeler sabit olabilir. Bu özellik, sabit dizeler oluşturan kodu geliştirebilir:

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

Açıklamalar

Sabit bildirimin türü, bildirimin tanıttığını üyelerin türünü belirtir. Yerel sabit veya sabit bir alanın başlatıcısı, örtük olarak hedef türe dönüştürülebilen bir sabit ifade olmalıdır.

Sabit ifade, derleme zamanında tam olarak değerlendirilebilen bir ifadedir. Bu nedenle, başvuru türlerinin sabitleri için tek olası değerler dizeler ve null başvurulardır.

Sabit bildirim, aşağıdakiler gibi birden çok sabit bildirebilir:

public const double X = 1.0, Y = 2.0, Z = 3.0;

Değiştiriciye static sabit bir bildirimde izin verilmez.

Sabit, aşağıdaki gibi bir sabit ifadeye katılabilir:

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

Not

Readonly anahtar sözcüğü anahtar sözcükten const farklıdır. Bir const alan yalnızca alanın bildiriminde başlatılabilir. Bir readonly alan bildirimde veya bir oluşturucuda başlatılabilir. Bu nedenle, readonly kullanılan oluşturucuya bağlı olarak alanlar farklı değerlere sahip olabilir. Ayrıca, bir const alan derleme zamanı sabiti olsa da, bu satırda readonly olduğu gibi çalışma zamanı sabitleri için kullanılabilir: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Örnekler

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
*/

Aşağıdaki örnekte yerel sabitin nasıl bildir olduğu gösterilmektedir:

public class SealedTest
{
    static void Main()
    {
        const int C = 707;
        Console.WriteLine($"My local constant = {C}");
    }
}
// Output: My local constant = 707

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin aşağıdaki bölümlerine bakın:

Ayrıca bkz.