简体   繁体   中英

variable in static methods inside static class

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 technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM