繁体   English   中英

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

[英]How do I access an instance of a class from a static method?

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

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

您不能,静态方法没有“当前实例”。 您可以在周围有100个实例或0个实例的情况下调用static方法,并且在两种情况下均可以使用。 除非您明确创建实例,否则它与任何实例都没有关系,例如,通过保留实例化形式的私有静态数组。 尽管与表单有关,但这很可能是不良样式和XY解决方案

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

将实例作为参数传递。 多数民众赞成在尽可能接近..

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;
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM