Aracılığıyla paylaş


salt okunur (C# Reference)

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 için bkz: C# dil belirtiminin. Dil belirtimi, C# sözdizimi ve kullanımı için nihai kaynaktır.

Ayrıca bkz.

Başvuru

C# anahtar sözcükler

Değiştiriciler (C# Reference)

Const (C# Reference)

Alanları (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu