我知道标题可能不清楚,我为此道歉。 所以我在visual studio中有2个表单,在第一个表单中用户登录到系统,第二个表单是其他一切发生的地方。
我在第一种形式中调用了一个名为info
的类,该类负责收集用户信息并检查登录等。当用户登录系统时,该类获取用户ID并存储它成为一个私人字符串。从那里程序进入第二种形式。
现在这是我的问题,如何让这个类全局化,以便我可以从第二个表单访问存储的userID?我可以创建该类的另一个实例(info myinfo = new info()
)吗?
PS我是面向对象概念的新手,所以请使用简单的术语。
答案 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 pattern,wsanville 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。