Rozsah platnosti určité proměnné (anglicky scope) je část zdrojového kódu, kde je proměnná definována (existuje, lze se na ni odkázat).
Pokud máme několik bloků kódu vnořených do sebe (např. v metodě Main je nějaké větvení), pak proměnná definovaná ve vnějším bloku existuje i v bloku vnitřním (její rozsah platnosti se vztahuje i na vnitřní blok).
Naopak to ale neplatí. Proměnná definovaná ve vnitřním bloku neexistuje (nelze se na ni odkázat) v bloku vnějším.
static void Main(string[] args) { char answer; Console.Write("Je naše Slunce hvězdou? (a/n): "); answer = Convert.ToChar(Console.ReadLine()); if (answer == 'a') { Console.WriteLine("Odpověděli jste: {0}", answer); Console.WriteLine("Vaše odpověď je SPRÁVNÁ."); } else { Console.WriteLine("Odpověděli jste: {0}", answer); Console.WriteLine("Vaše odpověď NENÍ správná."); } }
Na proměnnou answer se můžeme odkázat i v bloku příkazu if, kde vypisujeme, co uživatel odpověděl, přestože je tato proměnná deklarována v bloku metody Main, který je bloku příkazu if nadřazený (je vůči němu vnější).
static void Main(string[] args) { int repeatCount = 5; do { string message = "Zbývá iterací: " + repeatCount.ToString(); Console.WriteLine(message); repeatCount--; } while(repeatCount > 0); Console.WriteLine("Poslední hláška byla:"); Console.WriteLine(message); }
Překladač jazyka C#, resp. editor ve Visual Studiu nám poslední řádek podtrhne červeně a VS odmítne náš program spustit, protože na tomto řádku používáme proměnnou, jejíž rozsah platnosti skončil uvnitř těla cyklu. Proměnná message mimo tělo cyklu do-while neexistuje. Mimo tělo cyklu se na ni nemůžeme odkázat.