调用其他类函数
本文关键字:类函数 其他 调用 | 更新日期: 2023-09-27 18:06:49
我有一个grid
类和一个MainWindow
类。Grid的类函数需要调用MainWindow的函数:
// function from grid class:
public Point functionFromGridClass()
{
Point variable = MainWindow.functionFromMainWindowClass(0, 0);
// ...
}
// function from MainWindow class:
public static Point functionFromMainWindowClass(int x, int y)
{
Vector2 mouse;
mouse.X = x;
mouse.Y = y + (ClientRectangle.Height - glview.Size.Height);
// ...
}
如果我在functionFromMainWindowClass
中删除static
关键字,那么我就不能从网格类中调用它。如果我不删除static
关键字,那么我就不能使用主窗口的类变量ClientRectangle
和glview
,我得到一个警告"An object reference is required for the non-static field, method, or property"
。我从来没有遇到过这个问题,应该怎么解决呢?
网格类必须保存MainWindow实例的引用,并且可能在构建时提供给网格。
public class GridClass
{
private MainWindow window;
public GridClass( MainWindow Window)
{
window = Window;
}
public Point functionFromGridClass()
{
Point variable = window.functionFromMainWindowClass(0, 0);
}
}
我得到一个警告"非静态字段、方法或属性需要对象引用"
这个警告告诉你该怎么做:你需要一个实例来调用实例方法。
因此,您可以从方法中删除静态关键字,然后在您的Grid类中创建MainWindow
的实例,以便能够调用该方法:
var mainWindow = new MainWindow();
var result = mainWindow.functionFromMainWindowClass(5, 6);
在不确切知道发生了什么的情况下很难给出具体的建议,但总体情况是,您需要以某种方式获得您想要调用该方法的MainWindow
类的实例,无论是通过将其传递到Grid
在构建或类似,还是通过从一些资源管理器获得它。
静态方法通过className的引用来调用。像这样调用主窗口类函数:
public Point functionFromGridClass()
{
MainWindowClass.functionFromMainWindowClass(val1, val2);
}