【发布时间】:2019-04-29 10:55:16
【问题描述】:
我正在使用多个类,我的“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);
它没有任何问题。但是有了它,它只是告诉我我不能用字段初始化器引用非静态字段。这一定是可能的,但因为我一直这样做,所以我无法找出这里的问题。
【问题讨论】:
-
如果
growthRate和startLength的值没有改变(在应用程序运行期间),为什么不将它们声明为const? -
@Corak 我可能想稍后添加一个选项,用户可以将这两个更改为他的喜好
标签: c# constructor