繁体   English   中英

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

[英]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.

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