Udostępnij za pośrednictwem


Pola (Przewodnik programowania w języku C#)

A pole jest zmienna dowolnego typu, która jest zadeklarowana jako bezpośrednio w klasy lub struct.Pola są członków z ich typem zawierającym.

Klasy lub struktury mogą mieć pól wystąpień statycznych pól lub oba.Pola wystąpienia są specyficzne dla instancji typu.Klasa T, z pola wystąpienia f można utworzyć dwa obiekty typu t i zmodyfikować wartość f w każdym obiekcie bez wpływu na wartości w innym obiekcie.Z drugiej strony pola statycznego należy do samej klasy i jest współużytkowane przez wszystkie wystąpienia tej klasy.Zmiany wprowadzone od instancji będzie, być widoczny natychmiast do wystąpień, B i C, jeżeli mają dostęp do pola.

Ogólnie należy użyć pól tylko dla zmiennych, które mają prywatnym ani chronionym ułatwień dostępu.Należy przedstawić dane, udostępniający klasy kodu klienta za pośrednictwem metody, Właściwości i indeksatory.Za pomocą tych konstrukcji pośredniego dostępu do wewnętrznego pola, można zabezpieczyć się przed nieprawidłowe wartości wejściowych.Pole private, przechowujący dane, wystawione przez własności publicznej jest nazywany magazyn zapasowy lub Tworzenie kopii pola.

Zazwyczaj w polach są przechowywane dane, które muszą być dostępne dla więcej niż jedna metoda klasy i muszą być przechowywane przez czas dłuższy niż okres istnienia jakichkolwiek jednolitej metody.Na przykład klasy, która reprezentuje datę w kalendarzu może zawierać trzy pola Liczba całkowita: jeden dla jednego dnia, miesiąca i jeden rok.Zmienne, które nie są używane poza zakresem jednolitej metody powinien być zadeklarowany jako zmiennych lokalnych w ramach metody organ sam.

Pola są zadeklarowane w bloku klasy przez określenie poziomu dostępu, pola, typ pola, a po nim nazwę pola, a po nim.Na przykład:

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();  

    }
}

Aby uzyskać dostęp do pola w obiekcie, dodać okres po nazwie obiektu, a po nim nazwę pola, jak w objectname.fieldname.Na przykład:

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

Pole można podać wartość początkową przy użyciu operatora przypisania, gdy pole jest zadeklarowany.Aby automatycznie przypisać day pola do "Monday", na przykład, byłoby zadeklarować day jak w poniższym przykładzie:

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

Pola są inicjowane bezpośrednio przed nosi nazwę konstruktora wystąpienia obiektu.Jeśli Konstruktor przypisuje wartość pola, zastąpi wszelkie wartości podane w polu deklaracji.Aby uzyskać więcej informacji, zobacz Używanie konstruktorów (Przewodnik programowania w języku C#).

[!UWAGA]

Inicjator pola nie może odwoływać się do innych pól wystąpień.

Pola może być oznaczony jako publicznych, prywatnego, chronione, wewnętrzny, lub protected internal.Modyfikatory dostępu, te definiują, jak użytkownicy klasy mają dostęp do pola.Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu (Przewodnik programowania w języku C#).

Opcjonalnie może być deklarowana pole statyczne.Dzięki temu pola dostępne dla kodu wywołującego w dowolnym momencie, nawet jeśli istnieje nie instancji klasy.Aby uzyskać więcej informacji, zobacz Klasy statyczne i statyczni członkowie klas (Przewodnik programowania w języku C#).

Pole może być deklarowana na tylko do odczytu.Pole tylko do odczytu mogą być tylko przypisywane wartości podczas inicjowania lub w konstruktorze.A staticreadonly pole jest bardzo podobne do stałej, z wyjątkiem, że kompilator C# nie mają dostępu do wartości statycznego pola tylko do odczytu w czasie kompilacji, tylko w czasie wykonywania.Aby uzyskać więcej informacji, zobacz Stałe (Przewodnik programowania w języku C#).

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też

Informacje

Klasy i struktury (Przewodnik programowania w języku C#)

Używanie konstruktorów (Przewodnik programowania w języku C#)

Dziedziczenie (Przewodnik programowania w języku C#)

Modyfikatory dostępu (Przewodnik programowania w języku C#)

Klasy abstrakcyjne i zapieczętowane oraz członkowie klas (Przewodnik programowania w języku C#)

Koncepcje

Przewodnik programowania w języku C#