繁体   English   中英

如何从其他类的静态方法中调用非静态方法?

[英]How do I call a non-static method from a static method from a different class?

我想从位于不同类中的静态方法调用非静态方法。 我知道要从中调用方法的类的实例,但是我无法访问它。

public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
        Helper _Helper = new Helper(this);
    }
    public void DoSmth(string input)
    {
        Console.WriteLine(input);
    }
}

public class Helper
{
    MainForm _mainform = null;

    public Helper(MainForm mainform)
    {
        _mainform = mainform;
        _mainform.DoSmth("test"); //ok
    }
    public static void Test ()
    {
        _mainform.DoSmth("test"); //generates error
    }
}

您不能在静态上下文中访问非静态上下文。

您可以使_mainform静态

static MainForm _mainform = null;

或将您要测试的实例传递给Test方法

public static void Test(MainForm mainForm)
{
    mainForm.DoSmth("test"); 
}

或将Test非静态

public void Test()
{
    _mainform.DoSmth("test"); 
}

除了这些,您还应该修改设计。 考虑这些问题。 如果我有一个静态方法,为什么它应该访问一个实例成员? 如果方法应该访问实例成员,那么为什么它应该是静态的呢?

暂无
暂无

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

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