1
別のクラスにある静的メソッドから非静的メソッドを呼びたいと思います。メソッドの呼び出し元のクラスのインスタンスがわかりますが、アクセスできません。別のクラスの静的メソッドから非静的メソッドを呼び出すにはどうすればよいですか?
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
}
}
静的メソッドは、パラメータとして渡されたフォームを必要とするか、静的メソッド内に新しいインスタンスを構築する必要があります。 – asawyer
@asawyerまたは 'Helper.Test'を非静的にしてください。 –
@DStanleyはい、それは実際に尋ねられたものではありませんが、それも動作すると思います。 Helper型staticの内部にある 'MainForm'インスタンスを、今考えてみることもできます。 – asawyer