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

问题描述 投票:1回答:1

我已经研究了一个多星期了,我很难过。

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

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

所以我的问题是这个。

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

我尝试添加static,public,global等关键字。但我的IDE在这种情况下拒绝所有这些。

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

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

注意:我为这篇文章中的任何错误格式或拼写错误道歉。我不经常在这里发帖,但我真的很难过这个。希望这是一个简单的解决方案。我只是不知道该怎么做。

c# new-operator instantiation
1个回答
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)来获得它。只要记住确保它已经被初始化,或者检查它是否仍然是空的。

© www.soinside.com 2019 - 2024. All rights reserved.