Модификация на стойностите на статичните полета
Както вече стана дума по-горе, статичните променливи на класа, са споделени от всички обекти и не принадлежат на нито един обект от класа. Съответно, това дава възможност, всеки един от обектите на класа да променя стойностите на статичните полета, като по този начин останалите обекти ще могат да "видят" модифицираната стойност.
Ето защо, например, за да отчетем броя на създадените обекти от клас Dog, е удобно да използваме статично поле, което увеличаваме с единица, при всяко извикване на конструктора на класа, т.е. всеки път, когато създаваме обект от нашия клас:
public Dog(string name, int age)
{
this.name = name;
this.age = age;
// Modifying the static counter in the constructor
Dog.dogCount += 1;
}
|
Тъй като осъществяваме достъп до статично поле на класа Dog от него самия, можем да си спестим уточняването на името на класа и да ползваме следния код за достъп до полето dogCount:
public Dog(string name, int age)
{
this.name = name;
this.age = age;
// Modifying the static counter in the constructor
dogCount += 1;
}
|
За препоръчване е, разбира се, първият начин, при който е очевидно, че полето е статично в класа Dog. При него кодът е по-лесно четим.
Съответно, за да проверим дали това, което написахме е вярно, ще създадем няколко обекта от нашия клас Dog и ще отпечатаме броя им. Това ще стане по следния начин:
public static void Main()
{
Dog dog1 = new Dog("Karaman", 1);
Dog dog2 = new Dog("Bobi", 2);
Dog dog3 = new Dog("Sharo", 3);
// Access to the static variable
Console.WriteLine("Dog count is now " + Dog.dogCount);
}
|
Съответно изходът от изпълнението на примера е:
Константи (constants)
Преди да приключим с темата за статичните полета, трябва да се запознаем с един по-особен вид статични полета.
По подобие на константите от математиката, в C#, могат да се създадат специални полета на класа, наречени константи. Декларирани и инициализирани веднъж константите, винаги притежават една и съща стойност за всички обекти от даден тип.
В C# константите биват два вида:
1. Константи, чиято стойност се извлича по време на компилация на програмата (compile-time константи).
2. Константи, чиято стойност се извлича по време на изпълнение на програмата (run-time константи).
Сподели с приятели: |