Vu le code ci-dessous:Comment rendre Action <param, param2> compatible avec le type de délégué de l'événement?
void LookupBox_Load(object sender, EventArgs e)
{
Action d = delegate
{
if (!_p.AutoClose)
CloseLookupBox();
};
if (this.ParentForm.MdiParent != null)
this.ParentForm.MdiParent.Deactivate += delegate { d(); };
else
this.ParentForm.Deactivate += delegate { d(); };
}
Est-il possible d'omettre le délégué {d(); }?
void LookupBox_Load(object sender, EventArgs e)
{
Action<object,EventArgs> d = delegate
{
if (!_p.AutoClose)
CloseLookupBox();
};
if (this.ParentForm.MdiParent != null)
this.ParentForm.MdiParent.Deactivate += d;
else
this.ParentForm.Deactivate += d;
}
Note: Je veux faire en ligne
Whoops, tu as raison; il utilise un EventHandler vanille, donc je suppose que le générique n'est pas requis. L'utilisation du générique entraîne-t-elle des pénalités de performance? – gn22
Eh bien, vous devez vous abonner avec le bon type, donc vous devrez créer une instance non générique de toute façon ... –
+1 pour suggestion d'opérateur coalesce nulle. votre esprit peut vraiment saisir l'intention de chaque programme. – Hao