我们知道,Application变量是一个全局的变量,它和session变量的区别在于,Application变量对任何用户都是相同的,而session变量则根据不同用户而获取不同的相应值。
下面是转载的一篇巧用全局类的静态变量来代替Application的文章:
=================================================================================
在传统的ASP程序中,我们总是使用Application对象来保存应用程序级的变量。这种方式比较耗费内存----看看那些空间供应商明目张胆的限制Application的数量就知道了。现在好了,我们有了.NET ,可以充分发挥静态变量的优点。一方面,可以作为应用程序级的变量,另一方面,他的访问速度要比Application对象更快。
在.NET中, 大多数对象都是类, 包括Global.asax 也不例外.为了使用静态变量来代替Application变量, 我们首先需要为Global.asax 赋予一个类名.通过以下方式:
<%@ Application Classname="MyGlobals" %>
然后,然后我们在脚本标签中定义静态变量,注意 'Public' 和 'Shared' 关键字:
VB:
<Script language="vb" runat="server">
Public Shared sGreeting as String = "Visit HarrisonLogic.com!"
</Script>
C#
<Script language="C#" runat="server">
Public Static String sGreeting = "Visit HarrisonLogic.com!"
</Script>
现在我们已建立了 'sGreeting' 变量 set up,可以在.aspx 页面中通过类名和变量名直接调用它:
x = MyGlobals.sGreeting
怎么样,是不是很方便?
================
源程序如下:
Global.asax
<%@ Application Classname="MyGlobals" %>
<Script language="vb" runat="server">
Public Shared sGreeting as String = "Visit HarrisonLogic.com!"
</Script>
page1.aspx
<% @Page Language="VB" %>
<HTML>
<HEAD>
<script Language='vb' runat=server>
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = MyGlobals.sGreeting
End Sub
</script>
</HEAD>
<body>
<asp:label runat=server id=Label1></asp:label>
</body>
</HTML>
===============================================================================