This article has been localized into Polish by the community.
Pola
Jednym z najbardziej podstawowych elementów klasy są pola. Działają one podobnie jak zmienne, o których mówiliśmy poprzednio, ale są zdefiniowane na poziomie klasy, a nie metody. Różnica ta jest bardzo ważna, ponieważ wprowadza koncepcję "zasięgu widoczności" (ang. "scopes"), czyli decyduje skąd możemy uzyskać dostęp do zmiennej: zmienna lokalna (definiowana wewnątrz metody) jest dostępna tylko w tej konkretnej metodzie, podczas gdy pole klasy może być dostępne we wszystkich metodach tejże klasy, a nawet wewnątrz metod innych klas, jeżeli tylko widoczność na to pozwala.
Innymi słowy - różnica między zmienną, a polem opiera się na miejscu deklaracji. Zmienna zadeklarowana na poziomie klasy nazywana jest polem, podczas gdy zmienna zadeklarowana na poziomie metody jest po prostu zmienną.
Bardzo często Pola deklarowane są na górze klasy i ich dostępność jest ustawiana na private - prywatną (przedyskutujemy dostępność w późniejszej części tego rozdziału). Może to wyglądać następująco:
public class FieldsSample
{
private string name;
....
Posiadamy teraz zmienną na poziomie klasy o nazwie "name", która jest dostępna dla wszystkich metod tej klasy. Nie jest ona jednak dostępna z zewnątrz, gdyż określiliśmy ją jako prywatną - private. Możesz określić swoje pola jako protected (chronione) jeśli chcesz mieć do nich dostęp z klas pochodnych, lub nawet jako public (publiczne), jeśli chcesz korzystać z nich z dowolnego miejsca. Warto jednak pamiętać, że często najlepszym sposobem jest korzystnie z pól przy pomocy właściwości, o których porozmawiamy w następnym artykule.
W przykładzie powyżej, zmienna "name" nie posiada początkowej wartości, znaczy to, że musisz przypisać jej jakąś wartość zanim będziesz mógł jej użyć. Jeżeli wiesz jaką wartość początkową powinna mieć zmienna, możesz łatwo przypisać jej wartość w momencie deklaracji.
public class FieldsSample
{
private string name = "John Doe";
....
Alternatywnie możesz przypisać wartość pola w konstruktorze klasy. Nadpisze to jakąkolwiek wartość która była przypisana przy deklaracji i pozwoli na przypisywanie wartości dynamicznie.
Tak samo jak podczas naszej poprzedniej dyskusji, element składowy klasy może być dostępny poprzez " . " - kropkę, np. "class.member". Jednakże, kiedy chcemy uzyskać dostęp do elementu członkowskiego w używanej klasie, użyjemy do tego słówka "this" (to), np. "this.member". Tutaj mamy gotowy przykład gdzie deklarujemy kilka pól i używamy ich wewnątrz metody:
public class Fields1
{
private string name = "John Doe";
private int age = 42;
public void Describe()
{
string description = this.name + " is " + this.age + " years old...";
Console.WriteLine(description);
}
}
W metodzie Describe() (nie martw się, przejdziemy do metod w jednym z późniejszych artykułów) deklarujemy lokalną zmienną "description", o wartości bazującej na naszych dwóch zadeklarowanych polach. Zmienna "description" jest doskonałym przykładem zmiennej która zawsze powinna być zmienną ale nigdy polem: Jest to tymczasowe i istotne dla metody której używasz, gdzie pola mogą być istotne w innych metodach klasy.
Podsumowanie
Pola działają podobnie do zmiennych globalnych ponieważ mogą być używane do przechowywnia danych, do których później będziemy mieli dostęp wewnątrz klasy. Do pól możemy mieć dostęp także poza deklarowaną klasą, ale zazwyczaj używane są do tego właściwości. Porozmawiamy o właściwościach w następnym artykule.