Stałe

Wstęp


Na początek może trochę teorii. Czym są stałe? Stałe to w pewnym sensie zmienne "okrojone" z możliwości jakiegokolwiek wpływania na ich wartość w trakcie działania programu (muszą być też typem prostym). W czasie kompilowania programu kompilator zastępuje wszystkie stałe występujące w kodzie ich wartością. Czyli na przykład zapis:

const int Stała 10;
for (int i = 1; i < Stała; i++)


 zostanie skompilowany jak

const int Stała 10;
for (int i =1; i < 10; i++)


Zaczynamy


Jak łatwo zauważyć w obydwu kodach występuje słowo kluczowe const poprzedzające stworzenie zmiennej (?) typu int. Równie łatwo domyślić się że "zmienna" zmienną już nie jest - const sprawiło że kompilator traktuje ją jako stałą.
Jeśli ktoś nie wierzy - można to łatwo sprawdzić. Spróbujcie dodać następną linijkę kodu, na przykład

Stała = 15;


Kompilator będzie bezlitosny. Dlatego stała już podczas deklarowania musi mieć przypisaną wartość.

Język C# pozwala dodatkowo na przypisanie stałej wartości wyrażenia, lecz musi być ono do obliczenia w czasie kompilacji, na przykład:

const int Pierwsza_stała = 10 + 15;
const int Druga_stała = 20 * 2;
const int Trzecia_stała = Pierwsza_stała + 20;
const int Czwarta_stała = Environment.SystemDirectory;


Ale po co?


Wstęp mamy już za sobą. Stałe jak widać nie są wcale skomplikowane w użyciu. Znacznie trudniejsze jest dobre wykorzystanie w programie. Każdy kto zastanowił się nad dotychczas przeczytaną częścią artykułu, a nie miał dotychczas styczności ze stałymi, z pewnością zastanawia się po co w ogóle ich używać? Przecież (rozumuje) zamiast używać stałej w przykładzie powyżej wystarczy zastąpić ją cyfrą 10 i wszystko będzie działało równie dobrze, a nawet lepiej bo kod będzie krótszy. Czy ma racją? Owszem.

My jednak pamiętajmy że powyższy przykład był tylko przykładem i nijak ma się do zawiłości "prawdziwego" programowania. Używanie stałych niweluje ryzyko że, przy poprawianiu czegoś w programie zapomnimy coś zmienić (i doprowadzimy do efektownego wyjątku...).

Uwagi


- Konwencja nazewnicza (stosowana między innymi w biblitekach FCL od Microsoftu) nakazuje zapisywać nazwy stałych "Pascalem" (pierwsza litera każdego słowa duża, reszta małych).
- Sposób traktowania stałych przez kompilator jest dość interesujący (co zostało opisane na początku) - po prostu wstawia je w każde miejsce gdzie kod się do niej odwołuje. Jest to dobre rozwiązanie jeśli chodzi o wydajność, ale niestety, jeśli zmienimy stałą w jednym zastawie, będziemy musieli przekompilować również wszystkie pozostałe zastawy korzystające z tej stałej (bo inaczej odwołania do niej nie zostaną "uaktualnione"). Dlatego jeśli spodziewamy się że "stała" może ulec zmianie lepszym rozwiązaniem będzie stworzenie pola poprzedzonego słowem kluczowym readonly
Informacje
Ostatnia modyfikacja 03-01-2010 17:49 Ostatni autor MSM
Ilość wyświetleń 648 Wersja 3
Komentarz

Katalog
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0305 sek. (zapytań SQL: 9)