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.