一尘不染

c#.net中的全局变量

c#

如何在C#Web应用程序中设置全局变量?

我想做的是在页面(可能是母版页)上设置一个变量,然后从任何页面访问此变量。

我既不想使用缓存,也不想使用会话。

我认为我必须使用global.asax。有什么帮助吗?


阅读 1132

收藏
2020-05-19

共1个答案

一尘不染

使用公共静态类,并可以从任何地方访问它。

public static class MyGlobals {
    public const string Prefix = "ID_"; // cannot change
    public static int Total = 5; // can change because not const
}

可以从母版页或其他任何地方使用:

string strStuff = MyGlobals.Prefix + "something";
textBox1.Text = "total of " + MyGlobals.Total.ToString();

您不需要创建类的实例;实际上,您不能这样做,因为它是静态的。 new
只需直接使用即可。静态类中的所有成员也必须是静态的。字符串Prefix没有标记为静态,因为const它本质上是隐式静态的。

静态类可以在项目中的任何位置。它不必是Global.asax或任何特定页面的一部分,因为它是“全局的”(或者至少与我们以面向对象的术语理解该概念尽可能地接近。)

您可以根据需要创建任意多个静态类,并根据需要命名它们。


有时,程序员喜欢使用嵌套的静态类对常量进行分组。例如,

public static class Globals {
    public static class DbProcedures {
        public const string Sp_Get_Addresses = "dbo.[Get_Addresses]";
        public const string Sp_Get_Names = "dbo.[Get_First_Names]";
    }
    public static class Commands {
        public const string Go = "go";
        public const string SubmitPage = "submit_now";
    }
}

并像这样访问它们:

MyDbCommand proc = new MyDbCommand( Globals.DbProcedures.Sp_Get_Addresses );
proc.Execute();
//or
string strCommand = Globals.Commands.Go;
2020-05-19