Kee*_*eek 1 .net c# oop static
我想从位于不同类中的静态方法调用非静态方法.我知道我想从中调用该方法的类的实例,但我无法访问它.
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
}
}
Run Code Online (Sandbox Code Playgroud)
您无法在静态上下文中访问非静态上下文.
你可以做_mainform静电
static MainForm _mainform = null;
Run Code Online (Sandbox Code Playgroud)
或者将要测试的实例传递给Test方法
public static void Test(MainForm mainForm)
{
mainForm.DoSmth("test");
}
Run Code Online (Sandbox Code Playgroud)
或使Test非静态
public void Test()
{
_mainform.DoSmth("test");
}
Run Code Online (Sandbox Code Playgroud)
除此之外,你应该修改你的设计.想想这些问题.如果我有静态方法,为什么它应该访问实例成员?如果一个方法应该访问实例成员那么为什么它应该是静态的?
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |