静态类中的静态方法中的变量

时间:2012-06-21 20:12:02

标签: c# .net oop c#-4.0 static

请考虑以下代码:

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)}

temp变量是否对每个MyMethod的调用都有实例?或者因为它在静态类中的静态方法中只有一个temp变量的实例在内存中分配?

感谢

4 个答案:

答案 0 :(得分:7)

temp既不是静态变量也不是实例变量,它是 local 变量。声明它的方法是否为静态绝对无关紧要:变量的范围从其声明点开始,并以声明它的范围的结束大括号}结束。通过MyMethod的每个执行线程都会获得自己的temp副本,该副本在变量范围之外的任何位置都是不可见的。

答案 1 :(得分:4)

  

对于每次调用MyMethod,temp变量都有实例吗?

如果您的意思是“对MyMethod的每次通话都会获得单独的temp变量吗?”然后答案是肯定的。

它是静态类中的静态方法这一事实无关紧要 - 它是一个局部变量,因此每次调用都会得到一个“新的”局部变量。

答案 2 :(得分:0)

temp每次调用都有一个实例。

顺便说一句,我不太可能像在C ++中那样在静态方法中定义静态局部变量。

答案 3 :(得分:0)

即使在静态方法中,临时变量也必须声明为静态变量,否则它只是在该实例中本地创建,然后在方法调用结束时被吹走。