为什么我的全局变量被重新初始化

本文关键字:初始化 我的 全局变量 为什么 | 更新日期: 2023-09-27 18:07:52

我将详细说明,我将一些标志(如下)设置为全局变量,以便我可以在整个c#程序中使用它们。我运行调试,似乎每次页面重新加载或Page_Load例程运行时,全局变量被重新初始化。为什么?我该如何预防?

  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、Session、Application、本地文件或数据库等。当控件加载时,检索数据。

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