静态新手:静态类/方法中的非静态变量是否隐含静态
本文关键字:静态 变量 是否 新手 静态类 方法 | 更新日期: 2023-09-27 18:18:04
当一个网站同时点击具有非静态变量的相同静态方法时,这些变量即使未声明为静态,也是静态的吗?我想是的,但是我不得不问。
另一种选择是相同代码的不同执行具有不同的内部变量,因此该代码不会产生意外的字符串长度,例如:
public static class MyClass
{
public static int getResult(string ext)
{
int length = est.length; // One place in RAM or multiple?
Thread.Sleep(5000); // Does this stop program execution for others?
return length;
}
}
问题总结:
- 未声明为静态的静态方法变量是否隐含静态,即静态代码的同时执行会相互影响? 还是这些变量都有自己的存储空间?静态方法中的Thread.Sleep(5000)是否会停止所有用户的执行?
显示的是本地变量。所以,这些不是静态变量。每次调用该方法时(包括它递归地调用自己时),都会得到一组新的变量。不同的线程将而不是共享这些变量。注意,这与类是否是静态类无关。您需要区分以下内容:
- 局部变量,属于声明它们的方法
- 实例变量,与声明类型 的特定实例相关联
- 静态变量,与声明类型本身相关联(而不是与任何特定实例相关联)
Thread.Sleep
只使当前的线程休眠——如果你的应用程序有多个线程,其他的线程仍然可以执行。