Reputation: 13487
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
Upvotes: 2
Views: 2469
Reputation: 4002
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.
Upvotes: 0
Reputation: 4371
temp
has one instance per call.
BTW I'm missing possibility to define static local variables in static methods as in C++.
Upvotes: 0
Reputation: 1503859
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.
Upvotes: 4
Reputation: 727077
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.
Upvotes: 7