J'ai vu des exemples de méthodes d'extension génériques en C# pour les énumérations qui utilisent les éléments suivants where T: struct
et un autre qui utilise where T: IComparable
. Par exemple, dans le premier cas :
public static class EnumExtensionMethods
{
public static string Description<T>(this T enumValue) where T : struct
{
// ...
}
}
Je ne comprends pas pourquoi la contrainte exige que ce type T
doit être un struct
. Je m'attendrais à ce que ce soit where T : Enum
. Quelqu'un peut-il m'expliquer cela ? En bonus, peut-être aussi expliquer pourquoi IComparable
est également utilisé dans certains exemples.
Pour info, j'ai fait des recherches sur ce sujet. Je peux trouver des explications sur pourquoi IComparable
est utilisé, par exemple dans cette question mais cela ne semble pas concluant, et ils n'expliquent pas pourquoi struct
est utilisé en conjonction.