C# 为什么要重新初始化全局变量

C# 为什么要重新初始化全局变量,c#,asp.net,webforms,C#,Asp.net,Webforms,我将详细说明,我将在下面设置一些标志作为全局变量,以便在整个C程序中使用它们。我运行debug,似乎每次页面重新加载或页面加载例程运行时,全局变量都会重新初始化。为什么,我怎样才能防止这种情况 public partial class MakePayment1 : System.Web.UI.UserControl { Queries Q = new Queries(); decimal nopmt; decimal nopymts2;

我将详细说明,我将在下面设置一些标志作为全局变量,以便在整个C程序中使用它们。我运行debug,似乎每次页面重新加载或页面加载例程运行时,全局变量都会重新初始化。为什么,我怎样才能防止这种情况

  public partial class MakePayment1 : System.Web.UI.UserControl
    {
        Queries Q = new Queries();
        decimal nopmt;
        decimal nopymts2;
        StringBuilder sb = new StringBuilder();
        string autopay;
        string ppol;
        string whydt;
        string ccEnd;
        string pmtType;
        bool credCard;
        bool nwCard;
        bool today;
        bool fdate;
        bool dueToday;
        bool dueTime;
        bool expTime;
        SessionVars SV = new SessionVars();
        string nxtpaymnt = "";
        string nxtpaymntDt = "";
      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LoadPageData();
                getContractInfo();

C没有实际的全局变量。也许你指的是静态变量?如果是这样的话,您应该说静态变量,以减少混淆

每次加载页面时都会重新创建控件。所以你必须把数据保存在某个地方。通常在控件中,在请求之间持久化数据的最佳方法是在ViewState中

如果要持久化某些数据,必须使用、本地文件或数据库等。加载控件时,检索数据


我要提醒您不要在控件中使用ViewState之外的任何东西:通常在控件中,您可能会打开两个选项卡。您可能不希望这些数据混杂在一起,因为这可能会混淆用户。由于ViewState直接存储在页面上,因此不必担心它会混淆。

它们看起来不像全局变量。它们是,我取消了初始化,因为我认为这是问题所在。如图所示,它们是成员变量。它们与创建的类的每个实例相关联,并且每次页面加载都会创建一个新实例。明白了,我将使用会话参数。谢谢你这就是我想的。。。非常感谢。这将大有帮助。旁注:C没有全局变量虽然从语法的角度来看形式是正确的,但此语句可能并不反映每个人对全局变量的含义-静态字段/属性在常识上是全局变量。@AlexeiLevenkov True。我发表了措辞强硬的声明,让他停下来。我敦促任何在C中使用术语“全局变量”的人停止使用该术语。静态更准确,也更容易说。