我正在使用多个类,而我的“ ControllerCLass”需要初始化一个“ ListManager”类。由于某些参数在ListManager中仅使用一次,在ControllerClass中多次使用,所以我想我将在Controller中对其进行初始化并将其提供给Manager。
我显然可以对这些东西进行硬编码,但我只想将其放在一个位置,因此只需5次击键即可更改,而不希望在多个类中进行查找。
我的控制器或其相关部分:
public class ControllerClass
{
int growthRate = 50;
int startLength = 500;
ListManager listManager = new ListManager(startLength, growthRate);
/* Starts the Gui */
public void RunProgram()
{
Application app = new Application();
app.Run(new MainWindow(this));
}
...}
然后使用ListManager:
public class ListManager
{
int _startLength;
int _growthRate;
public ListManager(int startLength, int growthRate)
{
_startLength = startLength;
_growthRate = growthRate;
}
...}
我想要的是它能正常工作,如果我更换
ListManager listManager = new ListManager(startLength, growthRate);
使用
ListManager listManager = new ListManager(30, 30);
它没有任何问题。但是有了它,它只能告诉我无法使用字段初始化程序引用非静态字段。尽管必须这样做,但因为我一直都这样做,所以我不可能找出问题所在。
答案 0 :(得分:2)
使用声明初始化字段时,不能使用其他字段。
您可以将初始化移动到构造函数中,然后在其中访问其他字段:
public class ControllerClass
{
int growthRate = 50;
int startLength = 500;
ListManager listManager;
public ControllerClass()
{
this.listManager = new ListManager(this.startLength, this.growthRate);
}
...
}
或重复文字:
public class ControllerClass
{
int growthRate = 50;
int startLength = 500;
ListManager listManager = new ListManager(50, 500);
...
}