如何在整个应用程序中运行类的实例
本文关键字:运行 实例 应用程序 | 更新日期: 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关于该主题的文章。