readonly (C# Başvurusu)
readonly Alanlarında kullanabileceğiniz değiştirici bir anahtardır.Ne zaman bir alanı bildirimi içeren bir readonly değiştiricisi, atamaları bildirimi tarafından tanıtılan alanlar için yalnızca oluşabilir olarak bildirimin ya da aynı sınıf içinde bir kurucu.
Örnek
Bu örnekte, alan değerinin year yönteminde değiştirilemez ChangeYear, sınıf kurucusunda bir değer atanmış olsa:
class Age
{
readonly int _year;
Age(int year)
{
_year = year;
}
void ChangeYear()
{
//_year = 1967; // Compile error if uncommented.
}
}
Bir değer atamak için bir readonly yalnızca aşağıdaki bağlamlarda alan:
Ne zaman değişken bildiriminde örneğin başlatıldı:
public readonly int y = 5;
Bir örnek alanı için sınıfının örnek oluşturucular alanı bildirimi içeren veya bir static alan statik sınıf kurucusu içinde alan bildirimini içerir.Olduğu geçirmek için geçerli tek içerikleri de bunlar bir readonly olarak alan bir dışarı veya ref parametresi.
[!NOT]
readonly Anahtar sözcüğünü farklı const anahtar sözcüğü.A const alan yalnızca başlatılan alanı bildiriminin.A readonly alan başlatılan bildirimi sırasında veya bir kurucu.Bu nedenle, readonly alanlar kullanılan yapıcı bağlı olarak farklı değerler olabilir.Ayrıca, while bir const alan bir derleme zamanı sabiti olan readonly alan, aşağıdaki örnekte olduğu gibi çalışma zamanı sabitleri için kullanılabilir:
public static readonly uint timeStamp = (uint)DateTime.Now.Ticks;
public class ReadOnlyTest
{
class SampleClass
{
public int x;
// Initialize a readonly field
public readonly int y = 25;
public readonly int z;
public SampleClass()
{
// Initialize a readonly instance field
z = 24;
}
public SampleClass(int p1, int p2, int p3)
{
x = p1;
y = p2;
z = p3;
}
}
static void Main()
{
SampleClass p1 = new SampleClass(11, 21, 32); // OK
Console.WriteLine("p1: x={0}, y={1}, z={2}", p1.x, p1.y, p1.z);
SampleClass p2 = new SampleClass();
p2.x = 55; // OK
Console.WriteLine("p2: x={0}, y={1}, z={2}", p2.x, p2.y, p2.z);
}
}
/*
Output:
p1: x=11, y=21, z=32
p2: x=55, y=25, z=24
*/
Bu gibi bir ifade kullanırsanız, yukarıdaki örnekte:
p2.y = 66; // Error
Derleyici hata iletisi alırsınız:
The left-hand side of an assignment must be an l-value
bir sabit bir değer atamak üzere çalıştığınızda aldığınız aynı hata olduğu.
C# dil belirtiminin
Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.
Ayrıca bkz.
Başvuru
Alanlar (C# Programlama Kılavuzu)