C#4可选Null EventHandler

时间:2012-06-19 05:19:17

标签: visual-studio-2010 c#-4.0 parameters event-handling arguments

我正在尝试编写一个具有可选EventHandler Paramater的方法。它目前看起来像这样:

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'必须是非可空值类型才能在泛型类型或方法'System.Nullable'中将其用作参数'T'

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您无需使EventHandler可以为空。删除定义中的?

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