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(); } }
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.
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.
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.
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.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With