Variable scope
Variable scope in C# indicates the scope levels of variables that where they are accessible. Scope refers to the code block that starts with bracket and ends with closing bracket.
How Variable scope works in C#
When a variable is declared in C#, it is accessible for a scope. Appliance of variable scope is as follows:
- A Class variable (member variable as C++ term) is accessible within its container class (till Class ends with closing bracket)
- A local variable is in a scope until the scope is finished with closing bracket
- A local variable in a for, while or similar loop statement is in scope until the loop is finished with closing bracket. Variable scope in loop example:
...
bool v_condition = true;
while (v_condition)
//loop scope starts///
{
string v_aWord = "nevada";
Console.WriteLine(v_aWord);//OK: variable is in scope till closing bracket///
}
//loop scope ends///
Console.WriteLine(v_aWord);//ERROR: variable is not in scope///
...
Variable scope in Classes of C#
Above variable scope rules applies similar to the Classes and its methods. When a variable is declared in a Class as field (member variable in C++ term), variable is in scope until its container Class ends. Example:
class CL_employees
//Class scope starts///
{
//a field of Class///
string CLv_employeeAge;
//a method of Class///
void CLf_displayAge()
{
Console.WriteLine(CLv_employeeAge);//OK: age variable is in scope till Class
definition ends///
}
}//Class scope ends///
Variable scope in Functions of C#
Similar to the above appliance: a variable which is defined in a function is in scope within container function.
void f_aFunction()
//function scope starts///
{
//a variable///
int x = 5;
//access to variable///
Console.WriteLine(x);//OK: variable in scope///
}
//function scope ends///
After a scope ends, it indicates that the same named variable can be declared and can be accessed. Since it will refer to a new variable. If the same named variable is declared in same scope, it is compiler error due to the ambiguity and compiler ends up with scope clash.