簡體   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