如何在整个应用程序中运行类的实例

本文关键字:运行 实例 应用程序 | 更新日期: 2023-09-27 18:16:29

我知道标题可能不清楚,我为此道歉。所以我在visual studio中有两个表单,第一个表单是用户登录系统,第二个表单是其他所有事情发生的地方。

我在第一种形式中调用了一个名为info的类,该类负责收集用户信息并检查登录等,当用户登录系统时,该类获取用户ID并将其存储到私有字符串中。然后程序进入第二种形式。

现在我的问题是,我如何使这个类全局,这样我就可以从第二个表单访问存储的userID ?我可以创建类(info myinfo = new info())的另一个实例吗?

PS我是新的面向对象的概念,所以请用户简单的条款。

如何在整个应用程序中运行类的实例

就我个人而言,我会投票反对全局变量。相反,我通常这样做:

在调用表单1的代码中,通过属性从表单中获取参数。然后通过第二个表单上的参数将其传递给第二个表单。

例如:

void Main()
{
    var form1 = new Form1();
    form1.ShowDialog();
    var info = form1.GetInfo();
    var form2 = new Form2();
    form2.SetInfo( info );
    form2.ShowDialog();
}

如果你真的坚持使用全局类,请参考单例模式,正如wsanville指出的那样。它大致看起来像:

public sealed class Info
{
    private static Info _instance;
    private static readonly object _lock = new object();
    // Private to disallow instantiation.
    private Info()
    {
    }
    public static Info Instance
    {
        get
        {
            lock (_lock)
            {
                if (_instance==null)
                {
                    _instance = new Info();
                }
                return _instance;
            }
        }
    }
}

您可以使用Singleton模式在整个应用程序中访问类的一个实例。有关c#的实现,请参阅Jon Skeet关于该主题的文章。