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

时间:2011-12-03 14:48:34

标签: c#

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

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

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

PS我是面向对象概念的新手,所以请使用简单的术语。

2 个答案:

答案 0 :(得分:5)

就个人而言,我会投反对票。相反,我通常采用以下方式:

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

E.g:

void Main()
{
    var form1 = new Form1();
    form1.ShowDialog();

    var info = form1.GetInfo();

    var form2 = new Form2();
    form2.SetInfo( info );
    form2.ShowDialog();
}

如果您真的坚持参加全球课程,请查看Singleton patternwsanville pointed out。基本上它大致如下:

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;
            }
        }
    }
}

答案 1 :(得分:2)

您可以使用Singleton pattern在整个应用程序中访问班级的一个实例。有关C#中的实现,请参阅有关该主题的Jon Skeet's article