“单击” - 委托给实例方法不能有空的“this”

本文关键字:this 不能 单击 实例方法 | 更新日期: 2023-09-27 18:37:01

我知道这个话题有很多问题。但我似乎真的无法理解这整个代表的东西。我有点希望它工作并继续前进。每次当我看着代表时,我都会想,一定有一种方法可以让这更容易理解和做,但我似乎找不到它。

我有一个FlowLayoutPanel,它将填充一堆面板。 这些面板中的每一个都需要有一个OnClick(或Click?)方法才能附加到它。

所以我继续写(在我的个人小组课程的创建者内部):

IntDrawForm form = FindForm() as IntDrawForm;
Click += form.PointPanelClick;

当我尝试创建一个面板时,我最终Delegate to an instance method cannot have null 'this'

“单击” - 委托给实例方法不能有空的“this”

了错误消息。

是的,如果FindForm()返回 null 或不是IntDrawForm实例的内容,就会发生这种情况。这里没有什么特别针对代表的 - 如果您尝试将其作为第二行,您将获得类似的结果:

form.CallSomeMethod();

(在这种情况下,这将是一个NullReferenceException

鉴于第二行在null时基本上失败form,你不应该在这里使用as - 改用强制转换。这样,如果您没有IntDrawForm,第一行将失败,并且您将获得更多信息异常。

IntDrawForm form = (IntDrawForm) FindForm();

现在我们无法说出为什么FindForm()返回了null或非IntDrawForm,但那是另一回事。