This article has been localized into Czech by the community.
Pole
Jedním z nejzákladnějších stavebních prvků třídy je pole (field). Je to podobné jako proměnná, o které jsme mluvili dříve, ale je definováno na úrovni třídy namísto úrovně metody. Rozdíl je velmi důležitý a má to vše co do činění s konceptem oblastí viditelnosti (scopes), který rozhoduje, odkud může být proměnná přistupována: Lokální proměnná (definovaná uvnitř metody) může být přistupována pouze z této konkrétní metody, zatímco pole třídy může být přistupováno ze všech metod třídy a dokonce i z metod v jiných třídách, pokud to viditelnost dovoluje.
Jinými slovy, rozdíl mezi proměnnou a polem je v podstatě místo, kde je deklarováno. Proměnná na úrovni třídy je označována jako pole, zatímco proměnná na úrovni metody je obvykle označována jen jako proměnná.
Pole jsou často deklarována blízko vrcholu třídy a jejich viditelnost je často nastavena na soukromou (privátní), o viditelnosti si povíme později v této kapitole. Mohlo by to vypadat takto:
public class FieldsSample
{
private string name;
....
Nyní máme proměnnou na úrovni třídy s názvem "name", ke které může být přistupováno ze všech metod této třídy. Z vnějšku třídy k ní nelze přistupovat, ale pouze proto, že jsme ji označili jako private (soukromá). Můžete svá pole deklarovat jako protected (chráněná), pokud k nim chcete přistupovat z odvozených tříd, nebo dokonce public (veřejná), pokud chcete k nim přistupovat odkudkoliv, ale mějte na paměti, že doporučeným způsobem přístupu k polím z vnějšku třídy jsou vlastnosti, o kterých si povíme v dalším článku.
V našem výše uvedeném příkladu proměnná "name" nemá počáteční hodnotu, což znamená, že jí musíte něco přiřadit, než ji budete moci použít. Pokud již víte, jakou hodnotu by vaše pole mělo mít na začátku, můžete ji snadno přiřadit současně s její deklarací:
public class FieldsSample
{
private string name = "John Doe";
....
Jako alternativu můžete hodnotu poli přiřadit v konstruktoru třídy. To přepíše jakoukoli hodnotu přiřazenou poli v bodě deklarace a umožní vám přiřadit dynamické hodnoty.
Jak jsme se dříve bavili, k členům třídy lze přistupovat pomocí tečkové notace, jako "class.member". Když však přistupujeme k členu aktuální třídy, používáme klíčové slovo "this", jako "this.member". Zde je podrobnější příklad, kde deklarujeme několik polí a použijeme je uvnitř 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);
}
}
V metodě Describe() (a nebojte, metody si podrobněji vysvětlíme v jednom z dalších článků) deklarujeme lokální proměnnou s názvem "description", jejíž hodnota je založena na našich dvou deklarovaných polích. Proměnná "description" je skvělým příkladem proměnné, která by měla být vždy proměnnou a nikdy polem: Je dočasná a relevantní pouze pro metodu, která ji používá, zatímco pole by snadno mohlo být relevantní v jiných metodách třídy.
Shrnutí
Pole se chovají trochu jako globální proměnné, protože mohou být použity k ukládání dat, která pak mohou být přístupná odkudkoliv uvnitř třídy. Mohou být přístupná i zvenčí deklarující třídy, ale obvykle se pro tento účel používají vlastnosti. O vlastnostech si povíme v dalším článku.