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 FullProductName = $"{Platform} - Language: {Language}";
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: