Possible en double:
Nullable type as a generic parameter possible?Pourquoi Nullable <T> ne correspondent en tant que type de référence pour les contraintes génériques
je suis tombé sur une chose très bizarre avec des contraintes de type générique. J'ai une classe comme ceci:
public SomeClass<T> where T:class
{
}
Cependant, je l'ai trouvé, je ne peux pas utiliser les types nullables que je pense:
new SomeClass<int?>();
Je reçois une erreur qui int?
doit être une référence type. Est-ce que Nullable est vraiment juste une structure avec du sucre syntaxique pour le faire ressembler à un type de référence?
Quelle est la raison de cette contrainte? Pouvez-vous fournir plus de contexte? FYI Nullable est déclaré comme: 'public struct Nullable où T: struct' –
@SimonWhitehead essentiellement parce que l'utilisation de types de valeur sur cette classe peut avoir un comportement inattendu et de grandes répercussions sur les performances – Earlz
Ensuite, je suppose que la réponse directe est" oui, Nullable est un struct ". Je ne suis pas tout à fait sûr de ce que vous considérez comme du sucre syntactique pour Nullable. Il semblerait que votre seule option est de rouler la vôtre. –