如何存储在全局变量c#中

时间:2017-05-22 23:05:19

标签: c# .net database winforms access

如何将voterid存储到全局变量中,以便在其他表单中使用它?我将使用此voterid来检查选民是否已经投票。

MessageBox.Show("Welcome!");
OleDbCommand comd1 = new OleDbCommand();
comd1.Connection = connection;
comd1.CommandText = "SELECT VoterID FROM tbl_voter where Uname='" +
                    txt_user.Text + "' and Pword='" + txt_pass.Text + "'";
voterid = Convert.ToString(comd1.ExecuteScalar());
MessageBox.Show(voterid);

connection.Close();
connection.Dispose();

this.Hide();
vote form3 = new vote();
form3.ShowDialog();

2 个答案:

答案 0 :(得分:1)

如果我们谈论的是Windows窗体应用程序,那么" global"你的意思是"在整个过程中很常见,"然后你可以使用static variable

在这个例子中,我创建了一个特殊的类来保存静态变量,并声明一个字段和一个可用于程序的属性,并且在整个过程中只保留一个值。

static class GlobalVariables
{
    static public string SomeVariable { get; set ; }  //As a property
    static public string SomeOtherVariable;           //As a field
}

请注意,如果您的程序是多线程的,那么将关键部分放在静态变量周围可能是个好主意,如下所示:

static class GlobalVariables
{
    static private string LockObject = new Object();
    static private string _someVariable;

    static public string SomeVariable 
    { 
        get
        {
            lock(LockObject) { return _someVariable; }
        }
        set
        {
            lock(LockObject) { _someVariable = value; }
        }
    }
}

答案 1 :(得分:0)

应用程序状态属于应用程序状态对象。 WinForms应用程序没有其中一个,但您可以创建一个AppState类并将一个实例放在Program类的静态属性中。然后,您可以定义您喜欢的任何全局状态作为AppState的强类型属性,并从程序中的任何位置引用它们Program.AppState.MyGlobalStronglyTypedValue

如果需要保持应用状态,可以将(de)序列化逻辑放在AppState类中。