25.07.2017 Views

Intro-CSharp-Book-v2015

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

568 Въведение в програмирането със C#<br />

Понякога обаче, искаме да имаме полета, които са общи за всички обекти<br />

от даден клас. За да постигнем това, трябва в декларацията на тези полета<br />

да използваме модификатора static. Както вече обяснихме, такива полета<br />

се наричат статични полета (static fields). В литературата се срещат,<br />

също и като променливи на класа.<br />

Казваме, че статичните полета са асоциирани с класа, вместо с който и<br />

да е обект от този клас. Това означава, че всички обекти, създадени по<br />

описанието на един клас споделят статичните полета на класа.<br />

Всички обекти, създадени по описанието на един клас<br />

споделят статичните полета на класа.<br />

Декларация на статични полета<br />

Статичните полета декларираме по същия начин, както се декларира поле<br />

на клас, като след модификатора за достъп (ако има такъв), добавяме<br />

ключовата дума static:<br />

[] static <br />

Ето как би изглеждало едно поле dogCount, което пази информация за броя<br />

на създадените обекти от клас Dog:<br />

public class Dog<br />

{<br />

// Static (class) variable<br />

static int dogCount;<br />

Dog.cs<br />

}<br />

// Instance variables<br />

private string name;<br />

private int age;<br />

Статичните полета се създават, когато за първи път се опитаме да ги<br />

достъпим (прочетем / модифицираме). След създаването си, по подобие на<br />

обикновените полета в класа, те се инициализират с подразбиращата се<br />

стойност за типа си.<br />

Инициализация по време на декларация<br />

Ако по време на декларация на статичното поле, сме задали стойност за<br />

инициализация, тя се присвоява на съответното статично поле. Тази<br />

инициализация се изпълнява само веднъж – при първото достъпване на<br />

полето, веднага след като приключи присвояването на стойността по<br />

подразбиране. При последващо достъпване на полето, тази инициализация<br />

на статичното поле няма да се изпълни.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!