我有一个相当复杂的应用程序,所以我决定组织一些代码,并且我对主类的引用不再有问题了。我已经有了一个包含类的结构,但它们都是主类的属性,并且没有其他类属性需要引用主类。
所以我的结构是这样的:Main Class -> Class1, Class2, Class3 etc.
重组后,我创建了一个类似于此的结构:
Main Class -> (Class1 -> Class12, Class13), Class2, Class3 etc.
我之前将引用传递给主类就好了,但是现在我有一个更深层的结构,我得到了主class null
错误。
与此特定错误相关的结构是:
MainWindow: Form -> MaxFlow (algorithm) -> LabelNodes (a part of that algorithm)
结构非常简单,因为我的大多数代码与问题完全无关。
首先我有MainWindow
班。
public partial class MainWindow : Form {
private MaxFlow maxFlow; // Algorithm
internal MaxFlow MaxFlow { get => maxFlow; set => maxFlow = value; }
public MainWindow() {
InitializeComponent();
maxFlow = new MaxFlow(mainWindow: this);
}
然后是Maxflow
类:
class MaxFlow {
private MainWindow mainWindow;
public MaxFlow(MainWindow mainWindow) {
mainWindow = this.mainWindow;
}
然后是带节点的最后一个类:
class LabelNodes {
private MainWindow mainWindow;
public LabelNodes(MainWindow mainWindow) {
this.mainWindow = mainWindow;
}
public AddNewNodeLabel() {
//…
// THIS PART THROWS THE ERROR (mainWindow equal to null):
Label newLabel = new Label {
Location = mainWindow.LastClickLocation,
Name = ”…”
};
//…
}
我尝试设置断点,并在将MainWindow
类传递给null
类之前已经发现LabelNodes
类的引用已经null
,它将作为MaxFlow
传递给LabelNodes
课程。MainWindow
。
由于我在将MaxFlow
课程从import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import { shallow } from 'enzyme';
import { SignUp } from '../../src/pages';
describe('Testing SignUp component', () => {
it('renders as expected', () => {
const wrapper = shallow(
<SignUp />
);
expect(wrapper).toMatchSnapshot();
});
});
转移到npm test
之前没有遇到任何问题,我怀疑问题是因为我通过了两次,但不明白为什么会这样做一个问题。
任何帮助将不胜感激。
答案 0 :(得分:6)
您的代码不正确:您应该分配this.mainWindow
而不是参数mainWindow。它会将字段中的默认值null分配给参数。 (在Maxflow类中)
class MaxFlow {
private MainWindow mainWindow;
public MaxFlow(MainWindow mainWindow) {
// mainWindow = this.mainWindow; <-----
// should be:
this.mainWindow = mainWindow;
}
像DavidG指出的那样。更好的命名对话可以防止出现这些错误:
class MaxFlow
{
private MainWindow _mainWindow;
public MaxFlow(MainWindow mainWindow)
{
_mainWindow = mainWindow;
}
}