我知道这个话题已经有很多问题了。但我似乎无法理解这整个代表的内容。我有点想要它继续工作并继续前进。每次当我看到代表时,我都认为,必须有一种方法可以使这更容易理解和做,但我似乎无法找到它。
我有一个FlowLayoutPanel,它将填充一堆Panel。每个面板都需要有一个OnClick(或Click?)方法附加到它。
所以我继续编写(在我个人小组课程的创建者内部):
IntDrawForm form = FindForm() as IntDrawForm;
Click += form.PointPanelClick;
当我尝试创建一个我的面板时,我最终得到了错误消息Delegate to an instance method cannot have null 'this'
。
答案 0 :(得分:2)
是的,如果FindForm()
返回null
,或者不是IntDrawForm
的实例,则会发生这种情况。这里的代表没有特别的具体内容 - 如果您尝试将此作为第二行,您将获得类似的结果:
form.CallSomeMethod();
(在这种情况下,它将是NullReferenceException
。)
鉴于当form
为null
时第二行基本上失败了,你不应该在这里使用as
- 而是使用强制转换。这样,如果您没有IntDrawForm
,第一个行就会失败,并且您将获得更多信息性异常。
IntDrawForm form = (IntDrawForm) FindForm();
现在我们无法告诉为什么 FindForm()
已归还null
或非IntDrawForm
,但这是另一回事