2012-03-24 71 views
0

我是一个Windows窗体中的新手,我需要存储一个字符串,我可以检查通过我的程序,我创建了DataAccessClass.cs, Controller.cs, Entity.cs,我有一个Form1.cs和许多用户控件。所以基本上其中一个用户控件在文本框中获取一个字符串,但我的程序或其他控件中的其他类可能需要检查之前的字符串捕获的值。我需要做的事情一样如何通过我的窗体窗体应用程序存储字符串

if([theStringThatMustBeAccessibleThoriugOut].Equals("Something")) 
{ 
     //do something 
} 

再说,我是新手,我想一个提醒到哪里声明这个变量,如何访问它,以及如何储存到它从任何地方,它将在任何地方提供。我知道在asp.net中,我曾经使用Session["Blah"],我可以在任何时候在整个会话期间得到它。但在Windows窗体中,我不知道如何做到这一点..

任何帮助将不胜感激。

回答

4

你总是可以使用一些类的静态变量(我只是叫“环球”):

public class Global { 
    public static string TheString { get; set; } 
} 

然后可以从任何地方访问为Global.TheString

但要小心:静态变量带有成本。特别是,它们会对安全性和可测试性产生负面影响。对于一些原因使用静态变量看到以下内容:

http://hardcoded-dev.blogspot.com/2009/05/bad-habits-static-variables.html

http://gbracha.blogspot.com/2008/02/cutting-out-static.html

如果你想避免一些(但不是全部)与静力学相关的问题:

public class Global { 
    private static Global _global = new Global(); 
    public static Global Instance { get { return _global; } set { _global = value; } } 
    public TheString { get; set; } 
} 

现在请注意,TheString不再是静态的,并且Global.Instance可以在运行时更改。要访问您的特殊字符串,您现在可以使用Global.Instance.TheString

+0

我很抱歉,我是这样的新手..在这种情况下会是什么样的实例?像公共静态Customer {get {return _global;} set {_global = value}}? – user710502 2012-03-24 07:10:47

+0

我不确定你在那里问什么......在我的例子中,“Instance”就是它所说的......一个具体的“Global”类实例。语法'{get {} set {}}'是您指定*属性*的方式(这有点像公共变量,但更灵活)。不要担心成为新手......我们都必须从某个地方开始。 – 2012-03-24 20:09:07

+0

是的,我只是键入实例,它似乎不认出它.. :( – user710502 2012-03-24 21:37:47

相关问题