静态新手:静态类/方法中的非静态变量是否隐含静态

本文关键字:静态 变量 是否 新手 静态类 方法 | 更新日期: 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;
    }
}

问题总结:

  1. 未声明为静态的静态方法变量是否隐含静态,即静态代码的同时执行会相互影响?
  2. 还是这些变量都有自己的存储空间?静态方法中的Thread.Sleep(5000)是否会停止所有用户的执行?

静态新手:静态类/方法中的非静态变量是否隐含静态

显示的是本地变量。所以,这些不是静态变量。每次调用该方法时(包括它递归地调用自己时),都会得到一组新的变量。不同的线程将而不是共享这些变量。注意,这与类是否是静态类无关。您需要区分以下内容:

  • 局部变量,属于声明它们的方法
  • 实例变量,与声明类型
  • 的特定实例相关联
  • 静态变量,与声明类型本身相关联(而不是与任何特定实例相关联)

Thread.Sleep只使当前的线程休眠——如果你的应用程序有多个线程,其他的线程仍然可以执行。