如何从方法内部实例化全局或公共对象? C#

时间:2019-03-13 21:15:06

标签: c# new-operator instantiation

我已经研究了一个多星期,但我感到很困惑。

我正在Windows中处理多种表单。每个表单都驻留在其自己的名称空间中。在下面的代码中,我实例化了Robo_Pass类的新形式。它位于命名空间Space_Pass中。我正在使用的表单是Overseer类,并且位于名称空间Robo_Pi中。

请注意,使用多个名称空间不是问题。一切正常。

在此程序中,我与之在一起:

使用Space_Pass; (这样做是为了可以访问Robo_Pass,而无需指定其驻留的名称空间。

这是我的代码:

        public void Btn_Robo_Pass_Click(object sender, EventArgs e)
        {
            // Check to see if this Namespace/Form is open.
            bool test = check_App_Open("Robo_Pass"); 
            if (test == false) // if not, then create it. 
            {
                Robo_Pass pass = new  Robo_Pass();
                // set up event handler for when this form closes
                pass.FormClosed += Btn_Apps_Click;
                pass.TopMost=true;      
                pass.Show();        
                btn_Apps_.PerformClick();
            }
            else // If already open, then just call Window_Show(). 
            {
                Window_Show("Robo_Pass");
                btn_Apps_.PerformClick();               
            }   
        }

唯一的问题是:

                Robo_Pass pass = new  Robo_Pass();

我可以在此行中添加任何内容,以使名为“ pass”的对象成为程序其余部分的全局对象。

换句话说,我希望从此类中的其他方法中调用其他形式的方法,如下所示:

pass.method(variable);

如果我在方法之外创建对象“ pass”,则实际上可以执行此操作。 换句话说,如果我将以下代码移至任何方法之外,那么它将起作用:

                Robo_Pass pass = new  Robo_Pass();

然后我可以使用

访问其中的方法
pass.method(variable);

但是我需要在最初显示的按钮click方法中创建该对象。

所以我的问题是这个。

有什么方法可以在该按钮方法中创建该对象,并使该对象在其他方法中可用。

我尝试添加静态,公共,全局等关键字。但是我的IDE在这种情况下拒绝所有这些。

因此,我无所适从如何使此名为“ pass”的对象可用于此类中的其他方法。

正如我所说,如果我在方法之外实例化它,它就像一个超级按钮。但是不能那样做。我需要能够使用按钮实例化它。

注意:对于本文中的任何格式错误或错字,我深表歉意。我不经常在这里发帖,但我真的很为难。希望这是一个简单的修复。我只是不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

将变量声明移到您的方法之外并使其公开,然后在您的方法中实例化它:

public Robo_Pass pass = null;

public void Btn_Robo_Pass_Click(object sender, EventArgs e)
{
  ...
  pass = new  Robo_Pass();
  ... 
}

您现在可以通过您的课程实例访问它:

var yourClass = new YourClass();
yourClass.pass.method(variable);

如果您希望在不创建类的对象的情况下使用它,请将其设为静态:

public static Robo_Pass pass = null;

然后,您只需致电YourClass.pass.method(variable)就可以得到它。只需记住确保已首先对其进行初始化,或者进行检查以查看其是否仍为空。