asp.net中同时访问带有静态类型变量情况的区别与理解

c#中,有很强的数据类型,而数据类型又分为静态和非静态。这里我们讨论下静态类型中的访问情况。

页面test.aspx

代码如下:


 1     public static int testid;
 2 
 3     protected void Page_Load(object sender, EventArgs e)
 4 
 5     {
 6 
 7         testid = int.Parse(Request.QueryString["testid"]);
 8 
 9         for (int i = 0; i < 99999999; i++)
10 
11         {
12 
13         }
14 
15         Response.Write(testid);
16 
17     }

 

同时打开2个页面输入地址

1. test.aspx?testid=1

2.       test.aspx?testid=2

 

结果

1. test.aspx?testid=1 显示 1

2. test.aspx?testid=2 显示 1

修改后:


 1     public int testid;
 2 
 3     protected void Page_Load(object sender, EventArgs e)
 4 
 5     {
 6 
 7         testid = int.Parse(Request.QueryString["testid"]);
 8 
 9         for (int i = 0; i < 99999999; i++)
10 
11         {
12 
13 }
14 
15         Response.Write(testid);
16 
17     }

 

结果:

同时打开2个页面输入地址

1. test.aspx?testid=1

2.       test.aspx?testid=2

 

结果

3. test.aspx?testid=1 显示 1

4. test.aspx?testid=2 显示 2

正常

原因分析

差别就在与第一种方法用了,static静态类型,而第二种没有,这种情况说,在c#中,静态类型的数据类型在程序运行时是共享的。而非静态类型多个页面同时执行是互不影响的,一个页面请求操作分配一个内存空间,而static在所有的请求中只分陪一次内存空间,从而节省资源。

综上所属正确使用数据类型在合理利用服务器资源是很重要的。

 

原文地址:http://www.joleye.com/viewinfo-520.aspx

posted @ 2011-08-17 22:45  行间  阅读(363)  评论(0编辑  收藏  举报

版权所有:JoleYe网站CMS系统