Types nullables en tant que paramètres génériques
Les types de valeurs nullables, tels que int?, représentent la possibilité de contenir une valeur ou d'être nul. Bien que pratique pour gérer les données nullables, il existe des limites lors de leur utilisation comme paramètres génériques.
Considérez l'extrait de code suivant :
myYear = record.GetValueOrNull<int?>("myYear");
Ce code tente d'attribuer la valeur nullable renvoyée par GetValueOrNull à une variable int nullable (myYear). Cependant, le compilateur renvoie une erreur : « Le type 'int ?' doit être un type référence afin de l'utiliser comme paramètre 'T' dans le type ou la méthode générique."
Le problème ici est que GetValueOrNull est défini pour renvoyer un type de référence (objet), pas une valeur nullable taper. Pour résoudre ce problème, modifiez le type de retour en Nullable
static void Main(string[] args) { int? i = GetValueOrNull<int>(null, string.Empty); } public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct { object columnValue = reader[columnName]; if (!(columnValue is DBNull)) return (T)columnValue; return null; }
En changeant le type de retour en Nullable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!