Search code examples
c#staticstatic-variables

What is the use of static variable in C#? When to use it? Why can't I declare the static variable inside method?


I have searched about static variables in C#, but I am still not getting what its use is. Also, if I try to declare the variable inside the method it will not give me the permission to do this. Why?

I have seen some examples about the static variables. I've seen that we don't need to create an instance of the class to access the variable, but that is not enough to understand what its use is and when to use it.

Second thing

class Book
{
    public static int myInt = 0;
}

public class Exercise
{
    static void Main()
    {
        Book book = new Book();

        Console.WriteLine(book.myInt); // Shows error. Why does it show me error?
                                       // Can't I access the static variable 
                                       // by making the instance of a class?

        Console.ReadKey();
    }
}

Solution

  • A static variable shares the value of it among all instances of the class.

    Example without declaring it static:

    public class Variable
    {
        public int i = 5;
        public void test()
        {
            i = i + 5;
            Console.WriteLine(i);
        }
    }
    
    
    public class Exercise
    {
        static void Main()
        {
            Variable var1 = new Variable();
            var1.test();
            Variable var2 = new Variable();
            var2.test();
            Console.ReadKey();
        }
    }
    

    Explanation: If you look at the above example, I just declare the int variable. When I run this code the output will be 10 and 10. Its simple.

    Now let's look at the static variable here; I am declaring the variable as a static.

    Example with static variable:

    public class Variable
    {
        public static int i = 5;
        public void test()
        {
            i = i + 5;
            Console.WriteLine(i);
        }
    }
    
    
    public class Exercise
    {
        static void Main()
        {
            Variable var1 = new Variable();
            var1.test();
            Variable var2 = new Variable();
            var2.test();
            Console.ReadKey();
        }
    }
    

    Now when I run above code, the output will be 10 and 15. So the static variable value is shared among all instances of that class.