.net全局变量

时间:2011-04-10 12:06:28

标签: .net variables

什么是设置全局变量的最佳方式,我可以通过.net站点访问该变​​量。 基本上我想把它用作我可以从任何页面引用的是/否类型的标志。

感谢

8 个答案:

答案 0 :(得分:2)

通常,全局变量是不受欢迎的,但如果它适合您的设计选择,那么您可以使用静态类,使用静态成员。

答案 1 :(得分:2)

尚未详细描述的一种方法(虽然提到过)是使用AppSetting文件中的web.config值。

首先,在web.config文件的<configuration>下添加以下内容:

<appSettings>
    <add key="MyGlobalVar" value="true"/>
</appSettings>

<appSettings>部分可能已经存在,在这种情况下只需添加<add ...即可。

其次,为了能够从中读取,请在项目中添加对System.Configuration程序集的引用。

最后要从任何页面读取值,请输入以下代码:

string myGlobalValue = System.Configuration.ConfigurationManager.AppSettings["MyGlobalVar"];

然后,您可以更改.config文件中的值,保存它将使Web应用程序“重新启动”,因为池将被回收。

答案 2 :(得分:1)

这是一个非常简单的问题。您可以在任何地方创建和设置公共静态bool变量。一个例子是:

public static class ProgramSettings
    {
        public static bool Flag = false;
    }

但是如果要在不编译的情况下更改标志值,可以使用配置设置。 (web.config中)

答案 3 :(得分:1)

您可以使用 static 关键字。另外,我建议您在c#

中查看 enumerations

答案 4 :(得分:1)

因为你说标志我会使用const,因为它可以防止在代码中的任何地方更改bool:

public static class ApplicationFlags
{
    public const bool MyFlag = false;
}


if (ApplicationFlags.MyFlag)
    Reponse.Write("Ohh, my!");

您也可以使用静态字段。请注意,静态字段不是线程安全的。如果你在一个线程(一个http请求)中更改它们,它也将被更改为所有其他线程。

答案 5 :(得分:0)

如果您希望为每个用户存储这些内容,并且由于用户执行了某些操作,他们可能会定期更改,那么最好使用session variables

VB:

Session("FirstName") = FirstNameTextBox.Text
Session("LastName") = LastNameTextBox.Text

C#:

Session["FirstName"] = FirstNameTextBox.Text;
Session["LastName"] = LastNameTextBox.Text;

您可以在会话中存储任何引用或值类型。请记住,只要这些值持续存在,它们就会在服务器上为任何设置了这些变量的用户占用RAM。

如果要存储用于所有用户的全局变量,则可以使用global static variables

如果你已经知道价值并且它永远不会改变,那么你可以做类似的事情:

static string ImportantData = @"Some String That Will Never Change";

答案 6 :(得分:0)

是的,因为TakeMeAsAGuest说

使一个类静态具有您想要的所有配置值

public static class ProgramSettings
    {
        private static bool _flag = false;
        public static bool Flag
        {
          get { return _flag; }
          set { _flag = value; }
        }
    }

在应用程序启动时根据需要设置属性并从xml文件中读取它或通过添加web.config从web.config中读取它。

  <appSettings>
    <add key="flag" value="true" />
  </appSettings>

并在application_start中读取它,如

using System.Configuration;    
ProgramSettings.Flag = ConfigurationManager.AppSettings["flag"]

我的问候

答案 7 :(得分:0)

您可以使用Application Object创建一个变量。

将以下代码添加到Global.asax文件的代码隐藏模块中的Application_Start事件中:

Application("abc") = "hi"