Blok se u C# definiše kao niz linija koda obuhvaćenih parom velikih zagrada tj { linija koda 1 ... linija koda n }

Na početku bloka mogu da budu navedeni opisi promenljivih i konstanti koje su lokalne za blok.

Primer: Lokalne promenljive za blok

 { 
double x, y, z;
int i;
x=x+1;
y=4+x;
z=y-x;
i = 5;
}

VIDLJIVOST PROMENLJIVIH, VARIABLE  VISIBILITY ( SCOPE )

Vidljivost promenljive definiše koji delovi programa mogu da pristupe ili promene vrednost promenljive.

Jedna karakteristika promenljive je njen tip (type), koji smo ranije objasnili. Međutim, druga važna karakteristika je scope ili visibility, vidljivost promenljive. Ova karakteristika definiše koji delovi programa mogu da pristupe ili promene vrednost promenljive. Ako je npr. neka promenljiva deklarisana u okviru neke funkcije tj. metode, onda je takva promenljiva vidljiva samo u okviru te metode. Ako je, međutim, neka promenljiva deklarisana na nivou klase, pri čemu se nalazi na početku klase, naime posle klasne deklaracije, a pre deklaracija metoda klase, onda, ako je ova promenljiva deklarisana kao privatna, private, onda ova promenljiva je vidljiva na nivou klase, tj. bilo koja metoda tj. funkcija u okviru te klase može da koristi tu promenljivu, ali ako je deklarisana neka promenljiva kao javna, public, onda je ta promenljiva vidljiva svuda. A ako nije definisana vidljivost, onda po predefiniciji (default) takve promenljive su privatne. U principu, poželjno je minimizirati vidljivost promenljivih, jer to smanjuje mogućnost greški u programu. Postoje takođe promenljive specificirane kao protected, tj. zaštićene, i internal, interne promenljive, ali ovo će biti objašnjeno kasnije.

Posmatrajmo sledeći primer, gde je vidljivost pojedinih promenljivih definisana na razne načine.

Vidljivost se reguliše pomoću private, public, i velikih zagrada {...}.

Primer:

public string string1; //vidljivo svuda u okviru projekta
private string string2; //vidljivo samo u okviru ovog modula tj forme
private void button1_Click(object sender, System.EventArgs e)
{
bool bool1;//vidljivo samo u ovoj funkciji
if (bool1)
{
int int1;//lokalna varijabla vidljiva samo u ovom if-bloku
}
int1 = 1;}

U nastavku je  još jedan primer, gde se pogrešno koristi opseg važenja promenljive

class Primer
{
void PrvaMetoda(){ int var1; ...........}
void DrugaMetoda(){ var1=50; //greska }
}

I još jedan primer

class Primer
{void Metoda1(){polje1=50; //ok}
void Metoda2(){polje1=60;//ok}
int polje1=0;}

U jeziku C#, promenljiva definisana klasom (a ne funkcijom) se zove polje, tj. field. Polje, za razliku od lokalnih promenljivih, može se koristiti na nivou klase, tj. za razmenjivanje informacija između metoda u okviru klase. Promenjiva polje1 je definisana u klasi, a izvan meoda Metoda1 i Metoda2, pa je promenjiva polje1 u području važenja klase, i može se koristiti u svim metodama u klasi.Treba reći da kod metoda, prvo se deklariše promenljiva pa se tek onda koristi ta promenjiva, ali, kad je u pitanju klasno polje, tj. classfield, onda to nije slučaj, može se klasno polje deklarisati kasnije, posle njegove upotrebe, jer. kompajler je tako napravljen da pretraži deklaraciju.


Last modified: Monday, 23 September 2019, 11:23 PM