Scope of Variables in C#

The part of the program where a particular variable is accessible is termed as the Scope of that variable. A variable can be defined in a class, method, loop etc. In C/C++, all identifiers are lexically (or statically) scoped, i.e.scope of a variable can be determined at compile time and independent of the function call stack. But the C# programs are organized in the form of classes.

So C# scope rules of variables can be divided into three categories as follows:

  • Class Level Scope
  • Method Level Scope
  • Block Level Scope

Class Level Scope

  • Declaring the variables in a class but outside any method can be directly accessed anywhere in the class.
  • These variables are also termed as the fields or class members.
  • Class level scoped variable can be accessed by the non-static methods of the class in which it is declared.
  • Access modifier of class level variables doesn’t affect their scope within a class.
  • Member variables can also be accessed outside the class by using the access modifiers.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the
// Class Level Scope of variables
using System;
  
// declaring a Class
class GFG { // from here class level scope starts
  
    // this is a class level variable
    // having class level scope
    int a = 10;
  
    // declaring a method
    public void display()
    {
        // accessing class level variable
        Console.WriteLine(a);
  
    } // here method ends
  
} // here class level scope ends

chevron_right


Method Level Scope

  • Variables that are declared inside a method have method level scope. These are not accessible outside the method.
  • However, these variables can be accessed by the nested code blocks inside a method.
  • These variables are termed as the local variables.
  • There will be a compile-time error if these variables are declared twice with the same name in the same scope.
  • These variables don’t exist after method’s execution is over.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the
// Method Level Scope of variables
using System;
  
// declaring a Class
class GFG { // from here class level scope starts
  
    // declaring a method
    public void display()
  
    { // from here method level scope starts
  
        // this variable has
        // method level scope
        int m = 47;
  
        // accessing method level variable
        Console.WriteLine(m);
  
    } // here method level scope ends
  
    // declaring a method
    public void display1()
  
    { // from here method level scope starts
  
        // it will give compile time error as
        // you are trying to access the local
        // variable of method display()
        Console.WriteLine(m);
  
    } // here method level scope ends
  
} // here class level scope ends

chevron_right


Block Level Scope

  • These variables are generally declared inside the for, while statement etc.
  • These variables are also termed as the loop variables or statements variable as they have limited their scope up to the body of the statement in which it declared.
  • Generally, a loop inside a method has three level of nested code blocks(i.e. class level, method level, loop level).
  • The variable which is declared outside the loop is also accessible within the nested loops. It means a class level variable will be accessible to the methods and all loops. Method level variable will be accessible to loop and method inside that method.
  • A variable which is declared inside a loop body will not be visible to the outside of loop body.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# code to illustrate the Block
// Level scope of variables
using System;
  
// declaring a Class
class GFG
  
{ // from here class level scope starts
  
    // declaring a method
    public void display()
  
    { // from here method level scope starts
  
        // this variable has
        // method level scope
        int i = 0;
  
        for (i = 0; i < 4; i++) {
  
            // accessing method level variable
            Console.WriteLine(i);
        }
  
        // here j is block level variable
        // it is only accessible inside
        // this for loop
        for (int j = 0; j < 5; j++) {
            // accessing block level variable
            Console.WriteLine(j);
        }
  
        // this will give error as block level
        // variable can't be accessed outside
        // the block
        Console.WriteLine(j);
  
    } // here method level scope ends
  
} // here class level scope ends

chevron_right




My Personal Notes arrow_drop_up

Believes in Smart Work

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.