如何从静态方法访问类的实例?

时间:2014-10-16 21:12:27

标签: c# winforms static

如何从静态方法访问类的当前实例?静态方法是必要的。我只想获得父表单的当前子表单的计数。我的代码如下,但它说“应用程序”#39;在当前上下文中不存在

private static ReturnOpenWindowCount()
    {
      Form f = (Form)Application.OpenForms["Form1"]
      if(f.Children.Length > 0){//Do Something;}
    }  

3 个答案:

答案 0 :(得分:1)

你不能,静态方法没有'当前实例'。您可以在有100个实例或0时调用静态方法,并且它可以在两种情况下都有效。它与任何实例都没有关系,除非您明确地创建一个实例,例如通过保留实例化表单的私有静态数组。这很可能是糟糕的风格和XY solution虽然与形式有关。

答案 1 :(得分:1)

Youc可以将参数中的Application实例传递给此方法

答案 2 :(得分:0)

将实例作为参数传递。那就像你能得到的那样......

void Main()
{
Foo foo = new Foo();

Foo.ThisFoo(foo);

Console.WriteLine(foo);

Console.ReadLine();

}

// Define other methods and classes here
class Foo  
{

int x = 0;

public static void ThisFoo(Foo foo)
{
    foo.x = 1;
}

public override string ToString()
{
    return "" + x;
}
}