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
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
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在所有的请求中只分陪一次内存空间,从而节省资源。
综上所属正确使用数据类型在合理利用服务器资源是很重要的。