please consider this code :
1)public static class MyClass
2){
3) public static DateTime MyMethod(DateTime dt)
4) {
5) DateTime temp = new DateTime();
6) temp = dt.AddDays(1);
7) return temp;
8) }
9)}
Does temp
variable has instance per any calls to MyMethod
? or because it is in a static method inside static class just one instance of temp
variable allocate in memory?
thanks
temp
is neither a static nor an instance variable, it is a local variable. It absolutely does not matter whether the method in which it is declared is static or not: the variable's scope starts at the point of its declaration, and ends at the closing curly brace }
of the scope in which it is declared. Each executing thread that goes through MyMethod
gets its own copy of temp
, which is invisible anywhere outside the variable's scope.
Does temp variable has instance per any calls to MyMethod?
If you mean "does each call to MyMethod
get a separate temp
variable?" then the answer is yes.
The fact that it's a static method in a static class is irrelevant - it's a local variable, so you get a "new" local variable on each call.
temp
has one instance per call.
BTW I'm missing possibility to define static local variables in static methods as in C++.
The temp variable, even in a static method, has to be declared a static, otherwise it is just created locally in that instance, then blown away when the method call ends.