3

我正在尝试编写一个具有可选EventHandler参数的方法。目前,它看起来像这样:C#4可选空EventHandler

public void AddItemToMainMenu(MenuItem parentMenu, MenuItems item, String menuItemText, bool isChecked, EventHandler? eventHandler = null) 

上的最后一个参数发生错误,它指出:

错误51类型“System.EventHandler”必须是为了一个非空值 类型了一般类型或方法使用它作为参数“T” “System.Nullable”

编辑:我已删除?现在收到一个非常类似的错误,我也对另一个论点做了一个不重要的改变。现在内容如下:

public void AddItemToMainMenu(MenuItems item, String menuItemText, bool isChecked, EventHandler eventHandler = null, MenuItem? parentMenu = null) 

错误41类型“System.EventHandler”必须是为了在通用类型或方法“系统使用它作为参数“T”的非空值类型.Nullable'

回答

1

您不需要使EventHandler可以为空。在定义中删除?

例外说System.EventHandler必须是不可空值类型。由于EventHandler是一个类或引用类型,它显然不能是一个值类型,并且按照惯例可以为空。

3

EventHandler是一个引用类型,因此它本质上可以为空。 应该是:

public void AddItemToMainMenu(MenuItem parentMenu, MenuItems item, String menuItemText, bool isChecked, EventHandler eventHandler = null)