对象引用用于非静态字段相同类
问题描述:
内以相同的类中,我有:对象引用用于非静态字段相同类
public partial class MainWindow : Window {
// event handler
private static void messageReceived (object sender, messageReceivedEvent args)
{
//some code
stopProcesses()
}
void stopProcesses()
{
//some code
}
}
在事件处理程序,调用stopProcesses()得到标题中的错误:一个对象引用是非静态字段,方法或属性'MainWindow.stopProcesses'需要。 它们在同一个类中,并且我不能将stopProcesses设置为静态,因为如果类是静态的而且不是重点,则必须具有每个变量和每个方法。 我不知道如何从静态事件处理程序中调用非静态方法,但是,该方法的对象引用是什么?
答
最好的解决方案是让messageReceived
实例的作用域代替静态。
private void messageReceived (object sender, messageReceivedEvent args) {}
如果你想保持静态,那么你必须使用sender
实例,它应该是一个参考回到你的MainWindow
例如,所有你需要做的就是投它。
private static void messageReceived (object sender, messageReceivedEvent args)
{
((MainWindow)sender).stopProcesses();
}
为什么不能让'messageReceived'实例方法呢? – Jamiec
你真的需要'messageReceived'是静态的吗?使它成为一个实例方法(即移除'static')并且错误将会消失。 –