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ı, statik alanları veya her ikisi birden olabilir.A class or struct may have instance fields, 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. Statik alana yalnızca sınıf adını kullanarak erişebilirsiniz.You can access the static field only by using the class name. Statik alana bir örnek adı ile eriştiğinizde, CS0176 derleme zamanı hatası alırsınız.If you access the static field by an instance name, you get CS0176 compile-time error.

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, Özelliklerve 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 nesne içindeki bir alana erişmek için, nesne adından sonra, ' de olduğu gibi alanın adı ile bir nokta ekleyin objectname.fieldname .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. Alanı için otomatik olarak atamak için day "Monday" , örneğin, day Aşağıdaki örnekte olduğu gibi 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, korumalı, , 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# derleyicisinin derleme zamanında statik bir salt okuma alanının değerine erişiminin 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# dili 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