C# - Winforms - 全局变量

Moo*_*oon 27 c# global-variables winforms

我希望一些变量在整个项目中是全局的,并且可以在每种形式中访问.我怎样才能做到这一点?

Wae*_*oul 76

是的,你可以使用静态类.像这样:

static class Global
{
    private static string _globalVar = "";

    public static string GlobalVar
    {
        get { return _globalVar; }
        set { _globalVar = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用任何你可以写的地方:

GlobalClass.GlobalVar = "any string value"
Run Code Online (Sandbox Code Playgroud)

  • +1通过属性公开价值; 如果需要,这可以在以后添加锁定机制,而无需改变现有代码如何访问该值. (6认同)

Rig*_*ong 6

或者你可以把你的全局变量放在app.config中


Ste*_*eve 5

单程,

解决方案资源管理器>您的项目>属性>设置。单击此文件,然后从IDE添加定义您的设置。

通过访问它们

Properties.Settings.Default.MySetting = "hello world";
Run Code Online (Sandbox Code Playgroud)


Mar*_*ran 5

这里的共识是将全局变量作为静态成员放在静态类中。创建新的Windows Forms应用程序时,它通常带有一个Program类(Program.cs),它是一个静态类,并充当该应用程序的主要入口点。它在应用程序的整个生命周期中都有效,因此我认为最好将全局变量放在此处,而不是创建一个新变量。

static class Program
{
    public static string globalString = "This is a global string.";

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}
Run Code Online (Sandbox Code Playgroud)

并这样使用它:

public partial class Form1 : Form
{
    public Form1()
    {
        Program.globalString = "Accessible in Form1.";

        InitializeComponent();
    }
}
Run Code Online (Sandbox Code Playgroud)