Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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();     } } 
like image 920
Kartik Patel Avatar asked May 29 '12 08:05

Kartik Patel


People also ask

What is the use of static variable in C example?

1) A static int variable remains in memory while the program is running. A normal or auto variable is destroyed when a function call where the variable was declared is over. For example, we can use static int to count a number of times a function is called, but an auto variable can't be used for this purpose.

What are static variables used?

Static variables are used to keep track of information that relates logically to an entire class, as opposed to information that varies from instance to instance.

What is use of static in C?

A static function in C is a function that has a scope that is limited to its object file. This means that the static function is only visible in its object file. A function can be declared as static function by placing the static keyword before the function name.

What does a static variable mean in C?

In programming, a static variable is the one allocated “statically,” which means its lifetime is throughout the program run. It is declared with the 'static' keyword and persists its value across the function calls.


2 Answers

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 var = new Variable();         var.test();         Variable var1 = new Variable();         var1.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 var = new Variable();         var.test();         Variable var1 = new Variable();         var1.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.

like image 66
Kartik Patel Avatar answered Oct 08 '22 04:10

Kartik Patel


C# doesn't support static local variables (that is, variables that are declared in method scope).

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members#static-members

You can declare static fields (class members) though.

Reasoning: Static field is a state, shared with all instances of particular type. Hence, the scope of the static field is entire type. That's why you can't declare static instance variable (within a method) - method is a scope itself, and items declared in a method must be inaccessible over the method's border.

like image 33
Dennis Avatar answered Oct 08 '22 04:10

Dennis