加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP与ASP.NET静态变量

发布时间:2020-12-13 17:54:49 所属栏目:PHP教程 来源:网络整理
导读:ASP.NET中的静态变量让我措手不及.然后我变得吓坏了,因为这意味着要么我对网络世界中的静态变量有一个基本的误解,要么ASP.NET不像我想的那样行事. 所以在ASP.NET中 public class MyClass { public static bool myVar = true; } 如果ASPUserA设置MyClass.myVa
ASP.NET中的静态变量让我措手不及.然后我变得吓坏了,因为这意味着要么我对网络世界中的静态变量有一个基本的误解,要么ASP.NET不像我想的那样行事.

所以在ASP.NET中

public class MyClass {
    public static bool myVar = true;    
}

如果ASPUserA设置MyClass.myVar = false,系统上的每个其他用户都将遇到这些更改.所以,ASPUserB会有myVar = false.我的来源:http://www.foliotek.com/devblog/avoid-static-variables-in-asp-net/

class MyClassPHP {
    public static $myVar = false;
}

如果PHPUserA设置MyClass :: $myVar = true这是否意味着系统中的每个用户都会遇到这些更改?

谢谢.

经过进一步研究,我这样做了;

class MyClassPHP {
    public static $myVar = 0;
}

然后我有用户去了一个页面做这个

MyClassPHP::$myVar++;
echo MyClassPHP::$myVar;

它总是1.无论我多少次刷新或同时连接…… WOHHH这是一个很好的结论,否则我被搞砸了!

ASP.NET更新

经过进一步研究和测试,我发现了这一点.

public partial class MyPage : System.Web.UI.Page
{
    public static int myInt = 0;

    protected void Page_PreInit(object sender,EventArgs e)
        myInt++;
    }

}

然后我的页面可以显示myInt.

在浏览器(Firefox和Chrome)之间,当我刷新页面时,myInt逐渐变高.所以如果你的班级是静态的,这并不重要.只有你有静态变量才有意义.它们适用范围广泛.

在IIS中运行时:

静态变量不是特定于“页面”的.它具体是“AppDomain”.与“页面”的唯一关系是变量的路径(可以这么说)(例如MyProject.MyPage.MyVariable).由于应用程序的所有用户都在同一AppDomain(即相同的IIS应用程序文件夹)中运行,因此它们都将使用相同的静态变量.所以……最终你的用户将会看到彼此的信息,因为他们都在共享一个静态变量.

然而,PHP跟踪静态PER USER INSTANCE,所以我猜你可以称它们“从单身危险区域更安全”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读