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

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


我正在使用 Windows 中的多种表单。每个表单都驻留在自己的命名空间中。在下面的代码中,我将实例化 Robo_Pass 类的一种新形式。它驻留在命名空间 Space_Pass 中。我正在使用的表单是监督者类,位于命名空间 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);

但我需要在最初显示的按钮单击方法中创建此对象。


所以我的问题是这个。


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


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


所以我不知道如何使这个名为“pass”的对象可用于此类中的其他方法。


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


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


慕田峪4524236
浏览 130回答 1
1回答

子衿沉夜

将变量声明移到您的方法之外并使其公开,然后在您的方法中实例化它: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)。只要记住先确保它已经初始化,或者检查它是否仍然为空。
打开App,查看更多内容
随时随地看视频慕课网APP