C# Variable Scope and Code Blocks

C# Code Snippets Code Blocks And Scope
Share:

About

In this code snippet, we will take a look at variable scope and code blocks in C#.

A code block is the space between two { }. Variables can be considered out of or in scope depending on whether they are accessible or not from a particular code block. 

Let’s just have a look at the code below.

Code:

using System;

namespace scope
{
    class Program
    {
        static void Main(string[] args)
        {//start of code block
         //A set of { }  makes a code block.
         //You can nest a code block inside another code block.

            //Variable a is accessible from everywhere inside this code block(but not outside of it) 
            //including any other nested code block inside this code block.
            int a = 5; 
            if (true)
            { //start of code block 1 
                //Variable b is accessible from everywhere inside code block 1(but not outside of it).
                //Including any other nested code block inside code block 1.           
                int b = 9;     
                if (true)
                { //start of code block 2  
                    //And so on ... for very further nested code block ...
                    int c = 4;
                    if (true)
                    { //start of code block 3 
                        int d = 14;

                        //As you can see a is in scope here.
                        a = d;

                    } //end of code block 3
                } //end of code block 2
            } //end of code block 1

            //But d is outside of scope here and we get an error.
            d = 15;

            Console.ReadLine();
        }//end of code block
    }

    //Another scope example with a class.
    class MyClass
    {
        //MyClassVariable is only available in this class and to other members of this class.
        int MyClassVariable = 10;

        void MyMethod() 
        {
            //Only available inside this method.
            int MyMethodVariable = 10;

            Console.WriteLine(MyMethodVariable);

            Console.WriteLine(MyClassVariable);
        }

        void MySecondMethod()
        {
            //MyMethodVariable is not available in MySecondMethod.
            Console.WriteLine(MyMethodVariable);

            Console.WriteLine(MyClassVariable);
        }

        //NOTE:
        //The members of this class can be set to be accessible/inaccessible from outside of this class.
        //This can be done by changing the access modifiers private/public/protected.
        //See my post on access modifiers for more information on the topic.
    }
}

Resulting output:

Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

The following GDPR rules must be read and accepted:
This form collects your name, email and content so that we can keep track of the comments placed on the website. For more info check our privacy policy where you will get more info on where, how and why we store your data.

Advertisment ad adsense adlogger