[英]variable in static methods inside static class
请考虑以下代码:
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)}
每次调用MyMethod
temp
变量都有实例吗? 或者因为它在静态类中的静态方法中只有一个temp
变量实例在内存中分配?
谢谢
temp
既不是静态变量也不是实例变量,它是局部变量。 声明它的方法是否为静态绝对无关紧要:变量的范围从其声明点开始,并在声明它的范围的结束大括号}
结束。 通过MyMethod
每个执行线程都获得自己的temp
副本,该变量在变量范围之外的任何地方都是不可见的。
每次调用MyMethod时,temp变量都有实例吗?
如果你的意思是“每次调用MyMethod
都会获得一个单独的temp
变量吗?” 那么答案是肯定的。
它是静态类中的静态方法这一事实无关紧要 - 它是一个局部变量,因此每次调用时都会得到一个“新的”局部变量。
temp
每个调用有一个实例。
顺便说一下,我缺少在静态方法中定义静态局部变量的可能性,就像在C ++中一样。
临时变量,即使在静态方法中,也必须声明为静态,否则它只是在该实例中本地创建,然后在方法调用结束时被吹走。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.