请考虑以下代码:
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
变量在内存中分配?
谢谢
temp
既不是静态的,也不是一个实例变量,它是一个局部变量。 这绝对不要紧,在声明它的方法是静态的还是不:变量的作用域开始在其申报点,并在右大括号结束}
在声明它的范围。 每一个执行线程,通过云MyMethod
得到它自己的拷贝temp
,这是无形的可变范围之外的任何地方。
是否临时变量例如每任何调用的MyMethod?
如果你的意思是“确实每次调用MyMethod
得到一个单独的temp
变量?” 那么答案是肯定的。
它是在一个静态类的静态方法就是无关的 - 这是一个局部变量,所以你在每次调用一个“新”的局部变量。
temp
有每次调用一个实例。
BTW我缺少的可能性来定义静态方法静态局部变量在C ++。
临时变量,即使在静态方法,必须要声明一个静态的,否则它只是局部在该实例创建,然后吹走当方法调用结束。