Alanlar (C# Programlama Kılavuzu)Fields (C# Programming Guide)

Alan , bir sınıf veya Yapıiçinde doğrudan tanımlanmış herhangi bir türdeki değişkendir.A field is a variable of any type that is declared directly in a class or struct. Alanlar, kapsayan türlerinin üyeleridir .Fields are members of their containing type.

Bir sınıf veya yapının örnek alanları veya statik alanları ya da her ikisi birden olabilir.A class or struct may have instance fields or static fields or both. Örnek alanları, bir türün örneğine özeldir.Instance fields are specific to an instance of a type. Örnek alanı F olan bir sınıf T 'si varsa, T türünde iki nesne oluşturabilir ve diğer nesnedeki değeri etkilemeden her bir nesnede F değerini değiştirebilirsiniz.If you have a class T, with an instance field F, you can create two objects of type T, and modify the value of F in each object without affecting the value in the other object. Buna karşılık, statik bir alan sınıfa aittir ve bu sınıfın tüm örnekleri arasında paylaşılır.By contrast, a static field belongs to the class itself, and is shared among all instances of that class. A örneğinden yapılan değişiklikler, alana erişim varsa B ve C örneklerine hemen görünür.Changes made from instance A will be visible immediately to instances B and C if they access the field.

Genellikle, yalnızca özel veya korumalı erişilebilirliği olan değişkenler için alanları kullanmanız gerekir.Generally, you should use fields only for variables that have private or protected accessibility. Sınıfınızın istemci koduna sunduğu veriler Yöntemler, Özellikler ve Dizin oluşturuculararacılığıyla sağlanmalıdır.Data that your class exposes to client code should be provided through methods, properties and indexers. İç alanlara dolaylı erişim için bu yapıları kullanarak, geçersiz giriş değerlerine karşı koruma sağlayabilirsiniz.By using these constructs for indirect access to internal fields, you can guard against invalid input values. Ortak bir özellik tarafından açığa çıkarılan verileri depolayan özel bir alan, yedekleme deposu veya yedekleme alanıolarak adlandırılır.A private field that stores the data exposed by a public property is called a backing store or backing field.

Alanlar genellikle birden fazla sınıf yöntemine erişilebilir olması gereken verileri depolar ve tek bir yöntemin yaşam süresinden daha uzun bir süre içinde depolanmalıdır.Fields typically store the data that must be accessible to more than one class method and must be stored for longer than the lifetime of any single method. Örneğin, bir takvim tarihini temsil eden bir sınıf üç tamsayı alanına sahip olabilir: biri ayda, biri gün için ve diğeri yıl için.For example, a class that represents a calendar date might have three integer fields: one for the month, one for the day, and one for the year. Tek bir yöntemin kapsamı dışında kullanılmayan değişkenler, Yöntem gövdesinin içinde yerel değişkenler olarak bildirilmelidir.Variables that are not used outside the scope of a single method should be declared as local variables within the method body itself.

Alanlar, alanın erişim düzeyini, ardından alanın türü ve ardından alanın adı tarafından belirtilen sınıf bloğunda belirtilir.Fields are declared in the class block by specifying the access level of the field, followed by the type of the field, followed by the name of the field. Örneğin:For example:

   public class CalendarEntry
   {
       // private field
       private DateTime date;

       // public field (Generally not recommended.)
       public string day;

       // Public property exposes date field safely.
       public DateTime Date 
       {
           get 
           {
               return date;
           }
           set 
           {
               // Set some reasonable boundaries for likely birth dates.
               if (value.Year > 1900 && value.Year <= DateTime.Today.Year)
               {
                   date = value;
               }
               else
                   throw new ArgumentOutOfRangeException();
           }

       }

       // Public method also exposes date field safely.
       // Example call: birthday.SetDate("1975, 6, 30");
       public void SetDate(string dateString)
       {
           DateTime dt = Convert.ToDateTime(dateString);

           // Set some reasonable boundaries for likely birth dates.
           if (dt.Year > 1900 && dt.Year <= DateTime.Today.Year)
           {
               date = dt;
           }
           else
               throw new ArgumentOutOfRangeException();
       }

       public TimeSpan GetTimeSpan(string dateString)
       {
           DateTime dt = Convert.ToDateTime(dateString);

           if (dt != null && dt.Ticks < date.Ticks)
           {
               return date - dt;
           }
           else
               throw new ArgumentOutOfRangeException();  

       }
   }

Bir nesnedeki alana erişmek için, nesne adından sonra, objectname.fieldname' de olduğu gibi alanın adı ile bir nokta ekleyin.To access a field in an object, add a period after the object name, followed by the name of the field, as in objectname.fieldname. Örneğin:For example:

CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";

Alan bildirildiği zaman atama işleci kullanılarak bir alana ilk değer verilebilir.A field can be given an initial value by using the assignment operator when the field is declared. day alanını "Monday"otomatik olarak atamak için, örneğin, aşağıdaki örnekte olduğu gibi day bildirimini yapmanız gerekir:To automatically assign the day field to "Monday", for example, you would declare day as in the following example:

public class CalendarDateWithInitialization
{
    public string day = "Monday";
    //...
}

Alanlar, nesne örneği Oluşturucusu çağrılmadan hemen önce başlatılır.Fields are initialized immediately before the constructor for the object instance is called. Oluşturucu bir alanın değerini atadığında, alan bildirimi sırasında verilen değerin üzerine yazar.If the constructor assigns the value of a field, it will overwrite any value given during field declaration. Daha fazla bilgi için bkz. oluşturucular kullanma.For more information, see Using Constructors.

Not

Alan başlatıcısı diğer örnek alanlarına başvuramaz.A field initializer cannot refer to other instance fields.

Alanlar ortak, özel, korunan, dahili, korunan iç veya özel korumalıolarak işaretlenebilir.Fields can be marked as public, private, protected, internal, protected internal or private protected. Bu erişim değiştiricileri, sınıfın kullanıcılarının alanlara nasıl erişebileceğini tanımlar.These access modifiers define how users of the class can access the fields. Daha fazla bilgi için bkz. erişim değiştiricileri.For more information, see Access Modifiers.

Bir alan, isteğe bağlı olarak statikolarak bildirilemez.A field can optionally be declared static. Bu, sınıfın bir örneği mevcut olmasa bile, alanı her zaman çağıranlar için kullanılabilir hale getirir.This makes the field available to callers at any time, even if no instance of the class exists. Daha fazla bilgi için bkz. statik sınıflar ve statik sınıf üyeleri.For more information, see Static Classes and Static Class Members.

Bir alan ReadOnlyolarak bildirilemez.A field can be declared readonly. Salt okunurdur bir alana yalnızca başlatma sırasında veya oluşturucuda bir değer atanabilir.A read-only field can only be assigned a value during initialization or in a constructor. Bir static readonly alanı, C# derleyicinin derleme zamanında statik bir salt okuma alanının değerine erişimi olmaması dışında, yalnızca çalışma zamanında bir sabit değere benzer.A static readonly field is very similar to a constant, except that the C# compiler does not have access to the value of a static read-only field at compile time, only at run time. Daha fazla bilgi için bkz. sabitler.For more information, see Constants.

C# Dil BelirtimiC# Language Specification

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi.For more information, see the C# Language Specification. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.The language specification is the definitive source for C# syntax and usage.

Ayrıca bkz.See also