Course Content
C# Basics
C# Basics
Local & Global Scopes
The scope of a variable is the part of the code where we can access that variable. In C# there is a global scope and many possible local scopes.
When we create a variable outside of any method, it can be accessed from almost anywhere in the program, therefore, it is said to have global scope. For-example:
main
using System; namespace ConsoleApp { internal class Program { static int myVariable = 10; // Variable with a Global Scope static void testMethod() { // Accessing `myVariable` inside `testMethod` Console.WriteLine($"testMethod: {myVariable}"); } static void Main(string[] args) { // Accessing `myVariable` inside `Main` method Console.WriteLine($"Main Function: {myVariable}"); testMethod(); } } }
Note
When creating a variable outside any method, we need to add the keyword
static
before the declaration.
In the above code, we were able to access the variable myVariable
both in the Main
method and in the testMethod
. However, this is not always the case.
A variable declared inside a code-block is only available inside that code block, and the sub-code-blocks, if any. For example, a variable declared inside a method will only be directly accessible inside that method. Similarly, a variable declared inside an if
, else if
, or else
block will only be accessible inside that block. Such a variable is said to have a local scope.
It is a good code reading exercise to look at the following code and try to understand it:
main
using System; namespace ConsoleApp { class Program { static int variable_1 = 1; static void Main(string[] args) { int variable_2 = 2; if (true) { int variable_3 = 3; Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); } Console.WriteLine(variable_1); Console.WriteLine(variable_2); Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); // ERROR HERE // Note: A variable cannot be used before it's defined in the code } static void myMethod() { int variable_4 = 4; Console.WriteLine(variable_1); Console.WriteLine(variable_2); // ERROR HERE Console.WriteLine(variable_3); // ERROR HERE Console.WriteLine(variable_4); } } }
In the above code there are four variables:
variable_1
- Global Scope;variable_2
- Local Scope, defined in the Main method;variable_3
- Local Scope, defined in theif
block;variable_4
- Local Scope, defined in themyMethod
method;
The above program may not compile at all but demonstrates where certain variables can be accessed and where they cannot. The area of code where a variable can be accessed is called the scope of that variable.
variable_1
is a global variable so it is accessible almost everywhere;variable_2
is accessible throughout theMain
method, including the sub-blocks like theif
condition;variable_3
is accessible only inside theif
block;variable_4
is accessible only inside themyMethod
block;
Everything was clear?