c#.net中的全局variables

我如何在C#web应用程序中设置全局variables?

我想要做的就是在页面上设置一个variables(master page也许),并从任何页面访问这个variables。

我想要使​​用caching和会话。

我认为我必须使用global.asax。 任何帮助?

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

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(); 

你不需要创build一个类的实例; 实际上你不能,因为它是静态的。 new只要直接使用它。 静态类中的所有成员也必须是静态的。 string前缀没有标记为静态,因为const本质上是隐式静态的。

静态类可以在你的项目中的任何地方。 它不必是Global.asax或任何特定页面的一部分,因为它是“全局的”(至less尽可能接近于面向对象的概念)。

您可以根据需要制作任意数量的静态类,并根据需要命名。


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

 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; 

我第二个JDK的答案是:你的应用程序的任何类的任何公共静态成员可以被视为一个“全局variables”。

但是,请注意,这是一个ASP.NET应用程序,因此它是全局variables的multithreading上下文。 因此,在更新和/或从这些variables读取数据时,应该使用一些locking机制。 否则,您可能会使数据处于损坏状态。

您可以在应用程序中创build一个从System.Web.UI.Pageinheritance的基类。 让所有的页面从新创build的基类inheritance。 使用预期的访问修饰符将属性或variables添加到基类,以便从应用程序中的所有页面访问它。

您可以创build一个具有应用程序范围的variables

 /// <summary> /// Contains global variables for project. /// </summary> public static class GlobalVar { /// <summary> /// Global variable that is constant. /// </summary> public const string GlobalString = "Important Text"; /// <summary> /// Static value protected by access routine. /// </summary> static int _globalValue; /// <summary> /// Access routine for global variable. /// </summary> public static int GlobalValue { get { return _globalValue; } set { _globalValue = value; } } /// <summary> /// Global static field. /// </summary> public static bool GlobalBoolean; } 

只需在类的起始处声明variables即可。

例如对于stringvariables:

 public partial class Login : System.Web.UI.Page { public string sError; protected void Page_Load(object sender, EventArgs e) { //Page Load Code }